كيف استطيع اخفاء اسم الملف والـ id من الهتكس في برمجة الـ PHP

السلام عليكم

اقوم بعمل ببرمجة مكتبة الكترونية وعند تسجيل المستخدمين يستطيع المستخدم الذهاب إلى لوحة التحكم الخاصة به، المشكلة أن الرابط يظهر بالشكل التالي:

domain.com/control.php?user=mohammed

ارغب بحذف المسار الطويل في المتصفح ويبقى بالشكل الآتي:

domain.com/control/mohammed

ما هي الطريقة الصحيحة لفعل ذلك ، هل استطيع تعديلها من الهتكس في الموقع أو يمكن برمجتها بالـ PHP.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

Elalfi_Web أضف ردا

هذه الطريقة تسمى Route System موجودة في كل إطارات العمل مثل PHP Laravel و Python Flask وغيرها الكثير.

كل ما عليك فعله هو أن تأتي بهذا المسار /control/mohammed في ملف الـ index

ويمكنك فعل ذلك من خلال المصفوفة $_SERVER كما في المثال التالي :

$route = trim($_SERVER['REQUEST_URI'], '/'

إستخدمت trim لإزالة العلامات المائلة '/' الزائدة من بداية ونهاية المسار

بعد ذلك يمكنك أن تقوم بتقسيم هذا المسار بإستخدام دالة explode

$request_uri = explode('/', $route);

لاحظ أنه يجب عليك أن تقوم بعمل ملف .htaccess لتوجية كل الطلبات إلى ملف index.php وهذا ما يجب أن يكون محتواه:

RewriteEngine On

# RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [QSA,L]

لا استخدم اي اطار عمل ، فقط PHP Native بدون اي اطر

آه أعلم ذلك فقط حاولت أنا ايضُا أن أقوم ببناء إطار عمل من قبل لذلك ممرت بهذه المشكلة وكنت أريد أن أقوم بتحويل الروابط من هذا الشكل "domain.com/control.php?user=mohammed" إلى هذا الشكل "domain.com/control/mohammed" وكان الحل هو إستخدام $_SERVER['REQUEST_URI']

وهذه الطريقة التي ذكرتها سابقُا ستعمل معك في PHP Native بدون أاي إطر عمل.

H1OM أضف ردا

بامكانك فعل ذالك باستخدام ملف .htaccess

بطريقة سهله وبسيطة جداً

    RewriteRule ^([0-9]+).html /abc.php?id=$1 [QSA,L]

قمت باضافتها في الهتكس مع استبدال abc باسم الملف ، لكن لم يعمل

H1OM أضف ردا

في المثال الذي وضعته يجب ان تكون الصيغة ارقام فقط ، وليست حروف وارقام

هذا المقال سيفيدك جداً

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

BILALZEYADA أضف ردا

تستطيع باضافة

الكود التالي في .htaccess أو قم بالبحث عن Clean Urls for php .

ستجد أمثلة كثيرة ويمكن الاستفادة منها جميعا.

RewriteRule ^index.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]