سؤال

أقوم بتطوير تطبيق PHP لإدارة الطلبات للشركة. لعرض طلب عنوان URL حاليًا /orders/view/3502.

لا أريد أن يظهر رقم معرف الطلب في عنوان URL ، لذلك استخدمت مكتبة Encrypt الخاصة بـ Codeigniter لتشفير المعرف في عنوان URL. يبدو أن عنوان URL (بعد التشفير) /orders/view/AaffGdQQ.

المشكلة التي أواجهها هي في بعض الأحيان ، تحتوي المعرف المشفر على مقطع شرطة للأمام أو علامة زائد ، والتي لا تعمل بشكل صحيح عندما تكون في عنوان URL. يقرأ CodeIgniter عنوان URL استنادًا إلى القطع المائلة ، لذلك ، إذا كان المعرف المشفر به مائل ، فسوف يقرأ أنه كمتغيران ، وليس أحد المتغيرات. أيضا ، يتم تفسير العلامات بالإضافة إلى مسافات في عناوين URL.

لذا ، سؤالي هو ، كيف يمكنني تشفير المعرف والتأكد من أن السلسلة لا تحتوي على علامة زائد أو مائلة؟

تحرير: كان لدي فكرة لمعرفة ما إذا كان المعرف المشفر يحتوي على علامة مائلة أو علامة زائد ، وإذا كان كذلك ، فرضه مرة أخرى. لسبب ما ، في كل مرة يتم تشفير المعرف ، الأمر مختلف ، لذلك سيعمل هذا.

هل كانت مفيدة؟

المحلول

يمكنك أيضا base64_encode (). سيجعل ذلك أيضًا أطول بكثير ويظهر "أكثر أمانًا". يضيف أيضا طبقة من التشويش.

نصائح أخرى

ربما تمرير البيانات cryped من خلال urlencode() هل إصلاح هذا؟ بعد قيامك بذلك ، يجب عليك اعتراض البيانات قبل أن يقوم CodeIgniter وتشغيله urldecode() عليه.

مجرد فكرة سريعة ، حظا سعيدا جدا!

ابحث عن بعض الأحرف التي لا يستخدمها التشفير واستبدالها أثناء تناسبه. عند استخدام عناوين URL ، التراجع عنها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top