تصميم موقع الويب الخاص بك مع PHP و MySQL


الدرس: حماية مجلد مع HTACCESS


الصفحة السابقة
عندما تقوم بإنشاء موقعك في PHP ، فغالبًا ما تتم مطالبتك بإنشاء منطقة "Admin" حيث يكون الوصول محدودًا ... وهذا أفضل ، حيث يمكن للأشخاص الذين لديهم حق الوصول إلى منطقة المسؤول حذف كل شيء بشكل عام إذا كانوا يرغبون في ذلك.
لنفترض أنك قمت بإنشاء مجلد "Admin" يوجد به جميع ملفات الإدارة لموقعك. كيف يمكنني منع أي شخص من الوصول إلى هذه الصفحات؟
هذا هو المكان الذي ستساعدنا فيه الملفات .htaccess  : يمكننا بسهولة إنشاء حماية عن طريق تسجيل الدخول / كلمة المرور مما يمنع الوصول إلى جميع الملفات الموجودة في المجلد.
سيتعين علينا إنشاء ملفين:
  • .htaccess  : سيحتوي هذا الملف على عنوان .htpasswd وبعض الخيارات الأخرى التي يمكنك تحديدها ؛
  • .htpasswd  : يحتوي هذا الملف على قائمة بتسجيل الدخول / كلمات المرور ، لكل شخص مخول بالوصول إلى الصفحات!

إنشاء htaccess.


الخطوة الأولى هي إنشاء ملف على القرص الصلب الخاص بك يسمى .htaccess . نعم ، إنه ملف ليس له اسم ولا يحتوي سوى على ملحق ، بمعنى .htaccess . لذلك لا تتفاجأ إذا بدأت بنقطة.
افتح ملفًا جديدًا باستخدام محرر النصوص المفضل لديك. سنقوم بكتابة أكواد لا علاقة لها بتنسيق HTML أو PHP : هذه إرشادات للخادم. سيوضحون له أن بعض الأشخاص فقط هم المخولون للوصول إلى الملف. انسخ هذا الكود إليه:

AuthName "Page administration"
AuthType Basic
AuthUserFile "/home/site/www/admin/.htpasswd"
Require valid-user
من بين هذه الأسطر الأربعة ، هناك اثنان يجب عليك تغييرهما:
  • AuthName  : هذا هو النص الذي سيدعو المستخدم إلى تسجيل الدخول وكلمة المرور الخاصة به. يمكنك تخصيص هذا النص كما تراه مناسبا ؛
  • AuthUserFile  : هناك هو أكثر حساسية. هذا هو المسار المطلق للملف .htpasswd (الذي ستضعه في نفس الدليل مثل .htaccess ) .
ولكن كيف يمكنني العثور على هذا المسار المطلق؟
في الواقع ، في معظم الأحيان ، من الصعب العثور عليه لأنه يعتمد على الخادم. لحسن الحظ، هناك وظيفة PHP من شأنها أن تساعدنا حقا realpath .  تعطي هذه الوظيفة المسار المطلق للملف الذي تحدده. ستقوم بذلك على النحو التالي للعثور على المسار المطلق.
  1. إنشاء ملف يسمى chemin.php .
  2. فقط اكتب هذا السطر من التعليمات البرمجية داخله:
    
    <?php
    echo realpath('chemin.php'); 
    ?>
    
  3. أرسل هذا الملف إلى الخادم الخاص بك باستخدام برنامج FTP الخاص بك ، ثم ضعه في المجلد الذي تريد حمايته.
  4. افتح المستعرض وانتقل إلى ملف PHP هذا. يمنحك المسار المطلق ، على سبيل المثال في حالتي: /home/site/www/admin/chemin.php
  5. انسخ هذا المسار في موقعك .htaccess، واستبدله chemin.php بـ .htpasswd، والذي يعطينا في النهاية على سبيل المثال: /home/site/www/admin/.htpasswd
  6. احذف الملف chemin.php من الخادم الخاص بك ، لم يعد من المفيد لنا الآن أنه منحنا المسار المطلق. إذا تمت استضافتك بواسطة Free ، فهناك القليل من الدقة في إدارة تعريب .htpasswd : يجب ألا تملأ الخط AuthUserFile بالمسار المطلق للملف ، ولكن بمساره النسبي من جذر مساحتك الشخصية. مثال: إذا كنت تستخدم مساحة خالية مسماة monftpfree ، وقمت بوضع الملف .htpasswd في دليل admin، chemin.php فسوف يعرض الملف مسارًا إليك في النموذج /mnt/XXX/sda/X/X/monftpfree/admin/.htpasswd . يمكنك ثم ببساطة كتابة /monftpfree/admin/.htpasswd .
حفظ الملف عن طريق إدخال اسم في الاقتباس، مثل هذا: ".htaccess" . هذا يفرض على المحرر حفظ ملف يبدأ بنقطة.
نحن هنا: لقد انتهينا من إنشاء .htaccess، يمكننا الآن الانتقال إلى .htpasswd  

قم بإنشاء .htpasswd


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

login: encrypted_password
في النهاية ، .htpasswd يجب أن يبدو الملف الخاص بك كما يلي:

mateo21:$1$MEqT//cb$hAVid.qmmSGFW/wDlIfQ81
ptipilou:$1$/lgP8dYa$sQNXcCP47KhP1sneRIZoO0
djfox:$1$lT7nqnsg$cVtoPfe0IgrjES7Ushmoy.
vincent:$1$h4oVHp3O$X7Ejpn.uuOhJRkT3qnw3i0
في هذا المثال ، يوجد أربعة أشخاص مخولون للوصول إلى المجلد: mateo21 و ptipilou و djfox و vincent .
كيف يمكننا تشفير كلمات المرور؟
سؤال جيد ! مرة أخرى، هناك وظيفة PHP كبيرة من شأنها أن تفعل ذلك :  crypt . أنت تعطيها كلمة مرور وتقوم بتشفيرها لك (لا تقلق بشأن كيفية ذلك).
على سبيل المثال ، إذا كانت كلمة المرور الخاصة بي هي "kangourou" ، فإليك كود PHP الذي يجب علي كتابته للحصول عليه في الإصدار المشفر:

<?php
if (isset($_POST['login']) AND isset($_POST['pass']))
{
    $login = $_POST['login'];
    $pass_crypte = crypt($_POST['pass']); 
    echo '<p>.htpasswd  سطر لنسخه في :<br />' . $login . ':' . $pass_crypte . '</p>';
}

else 
{
?>

<p>أدخل اسمك المستعار و كلمة المرور التي ستشفّرها.</p>

<form method="post">
    <p>
        اسم مستعار : <input type="text" name="login"><br />
        كلمة المرور : <input type="text" name="pass"><br /><br />
    
        <input type="submit" value="قم بالتشفير !">
    </p>
</form>

<?php
}
?>
web dynamique php
واجهة لتشفير كلمة المرور
هناك جزءان من هذا الكود:
  • إذا كانا متغيران $_POST['login'] و $_POST['pass'] موجودان ، فقط إرسال النموذج.
نقوم بتشفير كلمة المرور التي أدخلناها ، ونعرضها $login:$pass_crypte بحيث لا يلزمك سوى نسخ الخط إلى .htpasswd ؛
  • 1. بخلاف ذلك ، إذا كانت المتغيرات $_POST['login'] أو $_POST['pass'] غير موجودة ، فإننا نعرض النموذج لطلب إدخال تسجيل الدخول وكلمة المرور.
يعيد النموذج تحميل الصفحة نفسها نظرًا لعدم وجود سمة action في العلامة 
، كما رأينا في الفصل الخاص بالنماذج. عند إعادة تحميل الصفحة، والمتغيرات $_POST['login'] و  $_POST['pass'] موجودة سيتم تشفير هذا الأخير!
نوصي بإنشاء هذه الصفحة في مكان ما على محرك الأقراص الثابتة (أو على الخادم الخاص بك ، أيا كان) ، بحيث يمكنك تشفير كلمات المرور الخاصة بك بسرعة لذلك .htpasswd .
إذا كنت كسولًا جدًا في إنشائه ، فلا تقلق ، فما عليك سوى استخدام كود الويب أعلاه.
هناك حالات معينة لن تضطر فيها إلى تشفير كلمات المرور. ضمن WAMP أو على خوادم Free.fr على سبيل المثال ، لا يجب عليك تشفير كلمات المرور الخاصة بك حتى تعمل. سيكون عليك بالتالي كتابتها مباشرة. مثلا :
mateo21:kangourou

إرسال الملفات إلى الخادم


لديك الآن ملفان على القرص الصلب لديك:  .htaccess و .htpasswd .
قم بتشغيل برنامج FTP الخاص بك.
انقل الملفات .htaccess و   .htpasswd الى المجلد الذي تريد حمايتها بكلمة مرور.
يجب أن ترى ما هو موضح في الشكل التالي في برنامج FTP الخاص بك.
web dynamique php
محتويات مجلد المسؤول الظاهر في برنامج FTP
ها هو: الآن الملف محمي. 
إذا حاول شخص ما الوصول إلى إحدى صفحات المجلد ( في هذه الحالة admin.php ) ، فسيحصل على نافذة مثل النافذة الموجودة في الشكل التالي تطلب منه تسجيل الدخول.
web dynamique php
المتصفح يسأل عن كلمة المرور
إذا أدخلت معلومات تسجيل الدخول الصحيحة بكلمة المرور الصحيحة ، فحينئذٍ يُسمح لك بالوصول إلى الصفحات!