صفحة 2 من 2 الأولىالأولى 12
النتائج 16 إلى 26 من 26

الموضوع: دورة الـ php الأولى مجانا !!!

  1. #16
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    الدرس : بنـاء لوحة تحكم بالـ Session





    مقدمة
    بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين أما بعد ، حديثنـا اليوم هو عبـارة عن دارسة لمشروع بناء لوحة تحكم عن طريق الـ Session أو الجلسـات ، إن لم تكن قرأت الدرس الأول فأتمنى قراءته قبل هذه الدرس لتكتمل الصورة ، يمكن أن تجد الدرس الأول من هنا ..

    قبل أن أبدأ في شرج الطريقة ، فسافترض بعض الافتراضـات التي سـاقوم بشرح الطريقة بناءً عليها :

    1- لدينا قــاعدة بيانات إسمها Loign تحتوي على جدول الأعضـاء authers ، وهذا الجدول يحتوي على حقلين ، الأول هو user وهو خاص باسم المستخدم والآخر هو password وهو بطبيعة الحال خاص بكلمة المرور ، وسنقوم باضافة اسم مستخدم وكلمة مرور مبدئيه وسافترض أن الاسم هو php وكلمة المرور هي 123 ، يمكنك انشاء هذا الجدول واضافة هذه البيانات اليه بسهولة باستخدم الكود التالي :
    Code ..


    CREATE TABLE authers (
    id int(11) NOT NULL auto_increment,
    user text NOT NULL,
    password text NOT NULL,
    email text NOT NULL,
    UNIQUE id (id)
    );

    INSERT INTO authers VALUES ( '1', 'php', '123', 'a@phpvillage.com');






    2- اسماء الملفات التي سنستخدمها في هذا الدرس كالتالي :
    - login.php لعرض النموذج أو الـ Fourm الخاص بادخال اسم المستخدم وكلمة المرور .
    - edit.php لتعديل البيانات الخاصة بالعضو .

    والهدف من اقحام ملف لتعديل بيانات العضو هو معرفة طريقة حماية الملفات بحيث لا يقوم باستعراضها الا من قام بعملية الدخول الصحيحة .

    في البداية سنتحدث عن الملف login.php ، الذي سيحتوي على النموذج الخاص بادخال إسم المستخدم وكلمة المرور وسيحتوي على عملية المعالجة لتلك البيانات المدخلة ، ولكي نختصر الوقت والجهد في الشرح سأقوم بوضع الكود الخاص بنموذج الإدخال الذي ساستخدمه :
    Code ..


    <table width=100% dir=rtl border=1 align=center>
    <form method=post action=$PHP_SELF>
    <tr><td colspan=2><font size=2>المستخدم</font></td></tr>
    <tr><td colspan=2><input type=textbox name=user size=13>
    </td></tr>
    <tr><td colspan=2><font size=2>كلمة المرور</font>
    </td></tr>
    <tr><td colspan=2><input type=password name=password size=13>
    </td></tr>
    <tr><td><input type=submit value="دخول">
    </td></tr></form></table>






    كما هو واضح في هذا النموذج فإن المستخدم مطالب بادخال اسم المستخدم وكلمة المرور ومن ثم الضغط على زر دخول لتنفيذ طلبه ، لكن ما هي الطريقة التي من خلالها يمكن التعامل مع هذا الطلب حسب ما نريد ؟

    للاجابة على هذا السؤال نحتاج الى أمرين ، الأول هو معرفة ما هي حالة الشخص المتصفح ، هل قام بعملية تسجيل الدخول فنعرض له لوحة التحكم أم لم يقم بتسجيل الدخول فنعرض له النموذج ، وفي كلتا الحالين نحتاج أن نتعرف على متغير الحالة session variable الذي سنقوم بتسجيله في حالة دخول المستخدم باسم صحيح وبكلمة مرور صحيحة وبالتالي إذا تم تسجيل المتغير فإن لوحة التحكم ستظهر أما اذا لم يتم تسجيله فلن يتم ذلك وساشرح هذا بالتفصيل في هذا الدرس .


    كود الملف login.php

    الكود الخاص بالملف login.php هو :
    Code ..


    <?
    include("config.php");
    if ($o == out) {
    session_destroy("userid_");
    }

    echo "<table width=15% bordercolor=000000 dir=rtl border=1 align=center>";
    if (!session_is_registered("userid_")) {
    if (!$user2 and !$password2) {
    echo "<form method=post action=$PHP_SELF>";
    ?>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <font face=Tahoma size=2>المستخدم</font></td></tr>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <input type=textbox name=user2 size=15>
    </td></tr>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <font face=Tahoma size=2>كلمة المرور</font></td></tr>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <input type=password name=password2 size=15> </td></tr>
    <tr><td bordercolor=FFFFFF align=center><input type=submit value="دخول">
    </td></tr></form></table>
    <?
    }
    elseif ($user2 and $password2) {
    $check_login_info = mysql_query("select * from authers where
    user='$user2' and password='$password2'")
    or die (mysql_error());
    if (mysql_num_rows($check_login_info) > 0 ) {
    $re = mysql_query("select * from authers where user='$user2'");
    while ( $r = mysql_fetch_array($re))
    { $userid_ = $r["id"]; }
    session_register("userid_");
    $user_id = mysql_query("select * from authers where id='$userid_'");
    while ($row = mysql_fetch_array($user_id)) {
    $username = $row["user"];
    }
    echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
    <tr><td bordercolor=FFFFFF align=center>
    <font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=login.php?o=out>خروج</a></td></tr>";
    }
    else { echo "<tr><td height=100 bordercolor=FFFFFF align=center>
    <font size=2 face=Tahoma>اسم المستخدم وكلمة المرور غير صحيحة</font>
    </td></tr></table>"; }
    }
    }
    elseif (session_is_registered("userid_")) {
    $user_id = mysql_query("select * from authers where id='$userid_'");
    while ($row = mysql_fetch_array($user_id)) {
    $username = $row["user"];
    }
    echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
    <tr><td bordercolor=FFFFFF align=center>
    <font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=login.php?o=out>خروج</a></td></tr>";
    }
    ?>






    لاحظ أني قمت بادراج ملف آخر في بداية هذا الكود ، وهذا الملف يحتوي على معلومات الإتصـال بقاعدة البيـانات ، يمكنك نسخ هذا الكود من هنا ، قم بحفظه في نفس المجلد الذي سيحوي ملف التحقق من هوية المستخدم .

    نعود للكود الذي ذكرته ، قم بنسخه واحفظه في ملف اسمه login.php أو أي اسم آخر ، وقم بتنفيذ الصفحة ، قد تظهر لك عدة رسائل أثناء تجربة الكود خاصة إذا كنت تعمل على جهازك الشخصي كسيرفر ، حتى وأن ظهر نموذج الإدخـال ربما تظهر لك رسائل الخطأ ، إذا صادفتك هذه المشكلة فعليك الذهـاب الى ملف الـ php.ini لديك والبحث عن كلمة Session ستجد سطراً يحتوي على السطر الأول في الكود التالي ، قم بتغييره الى السطر الثاني في الكود .. والكود كما يلي :
    Code ..


    session.save_path = /tmp
    session.save_path = c:\windows\temp






    قم بتجربة السكربت مرة أخرى وستجد أن الرسـائل أختفت ! ، وما قمنا به ببسـاطة هو تغيير مجلد حفظ ملفات الجلسـات أو الـ Session الى مجلد موجود فعلاً ، يمكنك تغييره الى أي مجلد ترغب به .




    شرح الكود 1

    حاليـاً كل شي جـاهز لمحـاولة الدخول بإسم المستخدم وكلمة المرور ، جرب أي أسم يخطر على بالك وأي كلمة مرور تخترعها ، ستجد أن النتيجة عدم الدخول الى لوحة التحكم ، بل كانت النتيجة هو ظهور رسـالة عدم السمـاح بالدخول ، قم بالعودة والدخول بإسم المستخدم الصحيح php وكلمة المرور الصحيحة 123 ستظهر لك لوحة التحكم ، وهنـا ساشرح الكود السابق بشي من التفصيل والمرور على أغلب الأسـطر .

    1- البداية بكود تسجيل الخروج التالي :

    Code ..


    <?
    if ($o == out) {
    session_destroy("userid_");
    }
    ?>





    وهنا يتم التأكد من وجود المتغير $o إذا كان يسـاوي out فسيتم استدعاء الدالة session_destroy وهي تقوم بالغاء الجلسة المسندة اليها ، وهي في مثالنا userid_ ، ببسـاطة هذه الدالة تجعل كأن شيئا لم يحدث ولم يتم تسجيل الدخول من الأسـاس ، ويرجع النموذج الخاص بادخال اسم المستخدم وكلمة المرور بالظهور مجدداً ..
    2- الكود التالي هو لعرض نموذج الإدخال :
    Code ..


    <?
    echo "<table width=15% bordercolor=000000 dir=rtl border=1 align=center>";
    if (!session_is_registered("userid_")) {
    if (!$user2 and !$password2) {
    echo "<form method=post action=$PHP_SELF>";
    ?>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <font face=Tahoma size=2>المستخدم</font></td></tr>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <input type=textbox name=user2 size=15>
    </td></tr>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <font face=Tahoma size=2>كلمة المرور</font></td></tr>
    <tr><td colspan=2 bordercolor=FFFFFF align=center>
    <input type=password name=password2 size=15> </td></tr>
    <tr><td bordercolor=FFFFFF align=center><input type=submit value="دخول">
    </td></tr></form></table>
    <?
    }
    ?>





    والمهم هنا هو الشرط if (!session_is_registered("userid_")) { وهو للتأكد من عدم تسجيل الدخول وعدم تسجيل الجلسة userid_ ، إذا تحقق الشرط فسيتم تنفيذ السطر الذي يليه ، وهو يحتوي على شرط آخر هو if (!$user2 and !$password2) { ، وهذا الشرط للتأكد من عدم تنفيذ النموذج ليتم عرضه ، إذا كان المتغيران user2 و password2 غير موجودين وليس لهما أي قيمة فسيتم تنفيذ الأسطر التـالية وهي عرض النموذج .




    شرح الكود 2

    3- الأسطر التالية هي :
    Code ..


    <?
    elseif ($user2 and $password2) {
    $check_login_info = mysql_query("select * from authers where
    user='$user2' and password='$password2'")
    or die (mysql_error());
    if (mysql_num_rows($check_login_info) > 0 ) {
    $re = mysql_query("select * from authers where user='$user2'");
    while ( $r = mysql_fetch_array($re))
    { $userid_ = $r["id"]; }
    session_register("userid_");
    $user_id = mysql_query("select * from authers where id='$userid_'");
    while ($row = mysql_fetch_array($user_id)) {
    $username = $row["user"];
    }
    echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
    <tr><td bordercolor=FFFFFF align=center>
    <font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=login.php?o=out>خروج</a></td></tr>";
    }
    ?>





    وهي في حالة عدم تحقق الشرط السابقة ذكره if (!$user2 and !$password2) { ، سيتم الإنتقـال الى المقطع الثاني من الشرط والذي يحتوي على elseif ($user2 and $password2) { ، وسيتم تنفيذ ما جاء بعده إن تحقق الشرط ، وكما هو واضح فإن الشرط يتحقق في حالة إدخال اسم المستخدم وكلمة المرور والضغط على تنفيذ ، سيتم تنفيذ جميع الأسطر التالية والتي فيها التحقق من اسم المستخدم المدخل وكلمة المرور المدخلة والتأكد من صحتهما ، إن كان كذلك سيتم تسجيل الجلسة في السطر :
    Code ..


    <?
    session_register("userid_");
    ?>





    وسيتم عرض لوحة التحكم فيما يلي هذا السطر من أسطر .


    تابـــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــع :con2:






  2. #17
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    شرح الكود 3

    4- الكود التالي هو :
    Code ..


    <?
    else { echo "<tr><td height=100 bordercolor=FFFFFF align=center>
    <font size=2 face=Tahoma>اسم المستخدم وكلمة المرور غير صحيحة</font>
    </td></tr></table>"; }
    }
    ?>





    وهو في حالة عدم تحقق الشرط الخاص بالتحقق من اسم المستخدم وكلمة المرور والشرط هو if (mysql_num_rows($check_login_info) > 0 ) { ، بمعنى أن النتائج من قاعدة البيانات هي أكبر من الصفر أي تم إيجاد البيانات ، عند عدم تحقق هذا الشرط ستظهر الرسالة ( اسم المستخدم وكلمة المرور غير صحيحة ) .
    5- آخر جزء هو :
    Code ..


    <?
    elseif (session_is_registered("userid_")) {
    $user_id = mysql_query("select * from authers where id='$userid_'");
    while ($row = mysql_fetch_array($user_id)) {
    $username = $row["user"];
    }
    echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
    <tr><td bordercolor=FFFFFF align=center>
    <font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
    <tr><td bordercolor=FFFFFF align=center>
    <a href=login.php?o=out>خروج</a></td></tr>";
    }
    ?>





    وفيه سيتم إظهار لوحة التحكم إن لم يتحقق أول الشروط وهو :
    Code ..


    <?
    if (!session_is_registered("userid_")) {
    ?>





    وكما قلت فهو شرط خاص بالتحقق من عملية تسجيل الجلسة userid_ .

    هنـا نكون قد انتهينا من الجزء الأول من الدرس ، وهو بنـاء لوحة التحكم ، بقي فقط أن نحمي بعض الملفـات الداخلية في لوحة التحكم لكي لا يراها إلا من قـام بتسجيل الدخول فعلاً ، ولهذا ساقوم بشرح ذلك على ملف لعرض بيانات العضو الذي قام بالدخول لضرب المثـال فقط ، سيفيدك في فهم طريقة حماية الملفات من الظهور إن لم تكن عملية الدخول تمت بنجاح .


    الملف edit.php

    أنسخ هذا الكود واحفظه في ملف بإسم edit.php :
    Code ..


    <?
    include("config.php");
    echo "<table width=50% dir=rtl align=center border=1>";
    if (session_is_registered("userid_")) {
    echo "<form method=post action=edit.php?ids=$ids>";
    if (!$user3 and !$email3) {
    $result = mysql_query("select * from authers where id='$ids'");
    while ($row = mysql_fetch_array($result)) {
    $user2 = $row["user"];
    $email2 = $row["email"];
    echo "<tr><td width=25%>
    <font face=Tahoma size=2>الإسم : </a></td>";
    echo "<td>
    <input type=textbox size=30 name=user3 value='$user2'></td></tr>";
    echo "<tr><td width=25%>
    <font face=Tahoma size=2>البريد الإلكتروني :</a></td>";
    echo "<td>
    <input type=textbox size=30 name=email3 value='$email2'>";
    echo "</td></tr><tr><td bordercolor=FFFFFF align=center>
    <input type=submit value='تنفيذ'></td></tr></form>";
    }
    } elseif ($user3 and $email3) {
    $up = mysql_query("update authers set user='$user3',
    email='$email3' where id='$ids'")
    or die (mysql_error());
    if ($up) {echo "<tr><td width=100% align=center>
    <font face=Tahoma size=2>تم تحديث البيانات بنجاح ..</font>
    </td></tr>";}
    }
    }
    elseif (!session_is_registered("userid_")) {
    echo "<tr><td width=100% align=center>
    <font face=Tahoma size=2>غير مسموح لك بدخول هذه الصفحة ..</font>
    </td></tr>";
    }
    echo "</table>";
    ?>





    هذا الشرط if (session_is_registered("userid_")) { هو الذي يقوم بحماية الصفحات في لوحة التحكم ، فقط يجب أن تمرر له إسم الجلسة التي تتعـامل معها وهي في مثالنا [/b]userid_[/b] ، فقط تذكر أنه يجب عليك اختيـار إسم الجلسة بشكل جيد بحيث لو كان لديك أكثر من لوحة تحكم في نفس الموقع لا يختلط عليك الأمر ولا تدع مجالاً لاحتمالية إختراق لوحة تحكمك الخاصة ، فإن كنت تحتاج الى استخدام أكثر من لوحة تحكم في موقعك فقم بتغيير إسم الجلسة ، وهكذا لكل تعامل جديد مع الـ Sessions .

    أتمنى من الله أن أكون وفقت في طرح هذا الموضوع المهم الذي كثرت التسآؤلات عليه ، وسيسرني تقبل أسألتكم ومحاولة الإجـابة عليها ، وصلى الله وسلم على نبينا محمد وعلى آله وصحبه أجميعين .






  3. #18
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    مشكوووووووووووووووووووووووووووووووور






  4. #19
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    على الردود






  5. #20

    تاريخ التسجيل
    Feb 2003
    المشاركات
    3,094


    جزاك الله خير على الدرس ..
    ولكن يفضل تستخدم كود الــ PHP .

    كود PHP:
    أقصد هذا الكوووود :) 






    __________________
    قل لمن يحمل هما .. بأن همه لن يدوم
    فكما تفنى السعادة .. هكذا تفنى الهموم

  6. #21
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    شكرا على الملاحظة






  7. #22
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    فين مشاركاتكم و شروحاتكم ؟؟؟؟؟






  8. #23
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    ننتظرررررررررررررررررررررررررررررررررررررررررررررر ررررر








  9. اخوي جزاك الله الف خير على كل ما قدمته وهذا ردي نيابه عن كل شخص قرا ولم يرد






  10. #25
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2005
    المشاركات
    383


    مشكووور على ردك الجميل

    تحياتي : العاطفي






  11. #26


    جزاك الله الف خير على الشرح المميز

    تحياتي لك










ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض