الدرس العاشر في لغة php

الدرس العاشر في لغة php


النتائج 1 إلى 4 من 4

الموضوع: الدرس العاشر في لغة php

  1. #1

    افتراضي الدرس العاشر في لغة php



    بدايتك الى الـsession



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



    قبل أن أتكلم عن كيفية استخدام الـSession وإعطاء بعض الأمثلة البسيطة ، سأقوم بالتكلم عن كيفية إعداد الـsession مع الـPHP .



    اعدادات الـsession في الـPHP

    لكي تستطيع التعامل مع الـsession بشكل جيد يجب عليك أن تتعرف على بعض الإعدادات التي في ملف الـphp.ini

    عندما تفتح الملف ستجد قسماً خاصاً فيه بالـsession هناك حوالى 19 إعداد ولكن لن نتطرق إليها كلها بل سنتكلم عن الأساسية والمهمة منها فقط كبداية لنا للتعرف على الـsession وكيفية عمله .



    اعداد طريقة التخزين
    كود PHP:
    session.save_handler (files mm user



    ستجد هذه العبارة مكتوبة في الملف كالتالى بشكل افتراضي :
    كود PHP:
    session.save_handler files 

    وهذا الإعداد يقوم بتحديد طريقة التخزين للـsession وهناك ثلاث حالات للتخزين :



    1 - التخزين في ملفات عادية على السيرفر :
    كود PHP:
    session.save_handler files 

    2 - التخزين على ذاكرة السيرفر :
    كود PHP:
    session.save_handler mm 

    3 - التخزين بطريقة أخري معرفة ومعينة من قبل المستخدم مثل التخزين في قواعد البيانات وهذا ما سوف نقوم بالتفصيل عنه بعد الكلام عن قواعد البيانات :
    كود PHP:
    session.save_handler user 

    يجب أن تأخذ في اعتبارك عدد الملفات التي سيقوم الـsession بتخزينها عند استخدامك للأعداد الأول والإفتراضي خاصة عندما يكون عدد الزوار بالمئات أو الآلاف .



    قد يكون استعمال الذاكرة أسرع ولكن المشكلة أنه من السهل مسح البيانات منها ببساطة .



    الطريقة الثالثة قد تكون أكثر الطرق مرونة ، ولكنها معقدة وصعبة جداً ، وهي تعطيك مرونة لتخزين البيانات في أي وسائط مدعومة من قبل الـPHP مثل قواعد بيانات mysql و oracle .



    الذي افترضه الآن أنك قمت بوضع قيمة هذه الخاصية إلى files















    إعداد مكان التخزين
    كود PHP:
    session.save_path (path/to/directory

    هذه الخاصية مفيدة إذا كنت قد ضبط الإعداد السابق إلى files

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



    الإنشاء التلقائي للـsession
    كود PHP:
    session.auto_start (1

    هذا الإعداد يقوم بتحديد إذا ما كان الـsession سيتم إنشاؤه تلقائياً عند كل زيارة للموقع أو لأي صفحة من صفحاته بدون إدراج كود الـsession في كل صفحة ... وعلى ذلك فإنك تقوم بوضع القيمة إلى (1) إذا أردت ذلك .

    وعلى إفتراض أنك لا تحتاج إلى أن تجعل الـPHP يقوم بعمل session لكل صفحة تلقائياً ومن غير طلب فستقوم بوضع قيمة هذا الإعداد الى (0)








    الـSID

    عندما يقوم الزائر بزيارة صفحتك فإن الـsession يستطيع تتبع هذا الزائر وعدد المرات التي قام فيه الزائر بالدخول لليوم الواحد ، يقوم الـPHP بعمل SID (session identefier) أو رقم معرف تلقائي بشكل افتراضي عندما تقوم بطلب إنشاء session بالزائر ، وكل رقم معرف يختلف عن الآخر تماماً ، إن رقم المعرف الذي ينشئه الـPHP شبيه للشكل التالى :


    كود PHP:
    fc94ad8b1ee49ef79c713ee98ac1fcc4 

    هناك طريقتين يستطيع بها الـPHP متابعة الـSID للمستخدم :

    1 - عن طريق المتابعة والتخزين بتسلسل في الكوكيز .

    2 - عن طريق اتباع رقم المعرف بعنوان الصفحة في الانترنت .



    سنأخذ أمثلة عن كلا الطريقتين :



    1 - استخدام الكوكيز

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

    خذ في اعتبارك أن بعض المتصفحات لا تسمح بأن يزيد حجم الكوكيز عن 5 كيلوبايت .



    هناك بعض الإعدادات البسيطة في ملف php.ini التي يجب معرفة معلومات عنها قبل البدء باستخدام الـsession مع الكوكيز :
    كود PHP:
    session.use_cookies (1

    هذه الخاصية تحدد ماذا كان يمكنك استخدام الكوكيز مع الـsession أو لا وعند وضع القيمة (0) فهذا يمنعك من استخدام الكوكيز مع الـ(session) وأما اذا كانت قيمته (1) فهذا يسمح باستخدام الكوكيز مع الـsession


    كود PHP:
    session.name (Default: PHPSESSID

    هذا الإعداد يقوم بتحديد اسم الكوكيز الذي سيحتفظ برقم المعرف (SID) والإعداد الافتراضي هو PHPSESSID ولن اقوم بتغيير هذا الإعداد لكي تستطيع فهم المثال الذي سأطرحه بعد قليل


    كود PHP:
    session.cookie_lifetime (Default: 0

    يقوم هذا الإعداد بتحديد المدة التي سيبقي فيها الكوكيز الذي يحتفظ بقيمة الـ(SID) والإعداد الافتراضي هو صفر ، أي أنه سيتم مسح الكوكيز تلقائياً بعد اغلاق المستخدم لنافذة المتصفح مباشرة


    كود PHP:
    session.cookie_path (Default: /) 

    يقوم هذا الإعداد بتحديد مسار دومين يتم تخزين الكوكيز له .. لا تقم بتغيير قيمته ودعه كما هو



    كود PHP:
    session.cookie_domain (Default: null

    يقوم هذا الإعداد بتعريف اسم دومين يتم تخزين الكوكيز لصالحه .. والقيمة الافتراضية هي null ، لا تقم بتغييرها



    ضع في اعتبارك انه اذا كانت قيمه الاعداد (session.use_cookies) تساوي واحد فان لا داعي لاستدعاء الدالة set_cookie() لإعداد الكوكيز بل سيتم اعدادها تلقائياً بواسطة الـPHP



    2 - الإضافةأوالكتابةإلى عنوان الصفحة

    إن إضافة عنوان الـSID إلى عنوان الصفحة يعتبر من الأشياء البشعة جداً رغم أن طريقته سهلة ومفيدة في حالة ما إذا كان الكوكيز غير مدعوم في المتصفح بشكل جيد

    مثال :
    كود PHP:
    <a href="configure.php?<?=SID?>">Go to the configuration page</a>

    بهذه الطريقة نقوم بإضافة المتغير المرجعي SID الذي سيقوم بإعطاء رقم معرف للمستخدم .



    متابعة الـsession

    لقد أخذنا حتي الآن معلومات تجعلنا ندخل عالم البرامج المسيره بالـsession بدون خوف ، سأبدأ الآن في طرح بعض الأمثلة البسيطة التي تثبت لديك بعض المفاهيم الأساسيه في الـsession ... سأشرح في هذا المثال كيفية إنشاء الـSID وتخزينه لاستعماله لاحقاً ، وخلاصة السيناريو للصفحة أننا نريد من المستخدم أن يفهم أنه يستطيع نخصيص لون الخلفية الذي يريد أن يشاهد به صفحات موقعنا ... سأقوم بتخزين قيمة مبدئية في المتغير الذي يقوم بتحديد لون الصفحة ، أنا افترض طبعاً أن المتصفح يدعم الكوكيز :

    سكربت يقوم بانشاء وتسجيل متغير session


    كود PHP:
    <?

      session_start
    ();
      
    session_register("zx");
      
    session_register("co");
      
    $zx=10;
      
    $co++;
      echo 
    'مرحبا بك في موقعنا أيها الزائر الكريم '."<br>";
       
      echo 
    "عدد زياراتك لهذه الصفحة=".  $co ;
      echo 
    "<br>";
      echo 
    '<a href="php2.php">الصفحة الثانية</a>';
      
    ?>

    اقصد بالجلسة هي الـ(session) وإن كانت الترجمة غير صحيحة ولكن فقط نأخذه كمصطلح .


    متغير الجلسة هو الـ(session-variable) أو متغير الـsession أو سمه ما شئت .



    الشرح

    يقوم هذا السكربت في البداية بإنشاء متغير اسمه (zx) ومتغير اسمه (co) وقمنا بإعطاء القيمة (10) للمتغير (zx) وقمنا بزيادة القيمة الموجودة (وهي الصفر) في (co) بواحد وكتبنا مرحبا بك ايها الزائر الكريم في موقعنا ، ثم قلنا له إن عدد زياراتك لهذه الصفحة هي قيمة المتغير( co ) ثم اعطيناه رابط للصفحة الثانية .

    في الواقع إن هذه المتغيرات وقيمها يتم الاحتفاظ بها في كوكيز له اسم خاص قمنا بتحديده سابقاً من ملف PHP.ini ، وهذا الكوكيز يحتفظ بقيمة الـSID للـsession .



    نحن لا نقوم بإخبار الـPHP أين سيحتفظ بقيمة المتغيرات لأننا بدأنا بكلمة الـ:
    كود PHP:
    session_start(); 

    وعلى هذا فإن الـPHP سيفهم أنه سيقوم بتخزين القيمة في الكوكيز الخاص بالـsession .

    قمنا بجعل المتغير co كعداد بسيط لعدد المرات التي سوف نقوم بها يزيارة الصفحة فعند عمل تحديث للصفحة سيتم زيادة العداد بمقدار واحد
    كود PHP:
    $c++; 

    وطبعاً قبل زيادة العداد بقيمة واحد فإنه يتم حساب القيمة السابقة للمتغير عند إنشاءه تلقائياً ... ومن ثم يتم الزيادة وبعد ذلك طباعة القيمة .

    كتابة رقم الـSID

    اكتب الآن الكود التالي واحفظه باسم php2.php
    كود PHP:
    <?

      session_start
    ();
      echo 
    $PHPSESSID ."<br>";
      echo 
    $zx;
      
    ?>

    في هذه الصفحة نقوم بطباعة قيمة الـSID وذلك بطباعة قيمه المتغير $PHPSESSID (الذي هو اسم الكوكيز الخاصة بالـsession ) .

    بعد ذلك قمنا في النهاية بطباعة قيمة المتغير $zx لكي ألفت نظرك بأن الكوكيز ما زال يحتفظ بها ولم يفقدها لأننا قد حددنا الإعداد في ملف php.ini الخاص بوقت الكوكيز الـ 3600 أي لمده ساعة ثم بعد تلك الساعة سيتم مسح الكوكيز ولن يمكنك استرجاع قيمة أي متغير :
    كود PHP:
    session.cookie_lifetime 3600 

    واضف إلى معلوماتك أنه لا يمكنك قراءة القيم للكوكيز الخاصة بالـsession إلا عن طريق إضافه الأمر
    كود PHP:
    session_start(); 

    يجب أن تبدأ بهذا الأمر دائماً إذا أردت قراءة قيم المتغيرات التي يحتفظ بها الكوكيز الخاص بالـsession .



    مسح متغير من الـsession

    كل ما عليك فعله هو استخدام هذه الدالة :
    كود PHP:
    session_unregister(variable name); 

    تقوم بوضع اسم المتغير في مكان الـ(variable name)

    مثال :
    كود PHP:
    session_unregister(“brn”); 



    سيقوم هذا الأمر بمسح المتغير (brn) من الـكوكيز الخاصة بالـ(session)



    قراءة قيم المتغيرات في الـكوكيز الخاصة بالـsession

    كل ما عليك فعله هو استخدام الدالة :
    كود PHP:
    session_encode(); 



    مثال :
    كود PHP:
    <?session_start();session_register("bgcolor");session_register("name");session_register("email");$bgcolor "#8080ff";$name "alfareees almolthem";$email "[email protected]";$e session_encode();print "The encoded string is: $e";?>



    بهذا السكربت نكون قد أنهينا درسنا عن مقدمة بسيطة للـsession. هذه مجرد مقدمة ولكي نستطيع أن نتعمق بالـsession فيجب علينا أن نتعلم شيئاً عن قواعد البيانات .




  2. #2

    افتراضي رد: الدرس العاشر في لغة php

    مشكوووور يا غالي

  3. #3

    افتراضي رد: الدرس العاشر في لغة php

    الله يجزآكك الجنةةة

    لآهنت على الدورةة الروعةة يالغلآ




  4. #4

    افتراضي رد: الدرس العاشر في لغة php

    تسلم يا الغلا { مجهود رائع و الشرح و اضح }

    خذ مني الكلمه يا الغلا { انت أستاذ }
    تحياتي

المواضيع المتشابهه

  1. [الدرس العاشر] شرح رفع شيل بيرل وتخطي السيف مود
    بواسطة ASDELY-ScOrPiOn في المنتدى دورة اختراق المواقع
    مشاركات: 101
    آخر مشاركة: 07-25-2013, 02:07 PM
  2. الدرس العاشر : خداع الضحية ببرنامج مزيف
    بواسطة الإرهابي في المنتدى منتدى إختراق البريد والايميلات
    مشاركات: 241
    آخر مشاركة: 05-15-2013, 03:43 PM
  3. الدرس العاشر شرح برنامج بيفروست - 1
    بواسطة حمودي خواجي في المنتدى قسم المواضيع المخالفة والمكررة
    مشاركات: 2
    آخر مشاركة: 11-23-2011, 04:37 PM
  4. الدرس العاشر شرح برنامج بيفروست - 1
    بواسطة حمودي خواجي في المنتدى أدوات اختراق الاجهزة والدمج والتشفير
    مشاركات: 2
    آخر مشاركة: 11-23-2011, 04:37 PM
  5. الدرس العاشر: استغلال الثغرات المكتوبة بلغة html
    بواسطة ASDELY-ScOrPiOn في المنتدى اختراق المواقع والسيرفرات
    مشاركات: 30
    آخر مشاركة: 01-21-2011, 02:25 AM

المفضلات

أذونات المشاركة

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