Docstoc

10

Document Sample
10 Powered By Docstoc
					                               ‫بدايتك الى الـ‪session‬‬
‫الـ ‪ session‬هي عبارة عن تقنية للترابط مـ الستـتم و يهـي مد ـد ة ضـسن الــ4‪ PHP‬يلـ تنـن مد ـد ة‬
‫ضسن اإلص ارات التي قبله بل كان يجـ أن تقـدو بتركيـ منتبـة لنـي تتـتعي اخـتم او هـلت التقنيـة ،‬
‫يعتس فهسنا للـ‪ session‬على فهسنا للندكيز يكيفية اختعسالها يلقـ تنلسنـا عـن النـدكيز بجـنل يـ فـي‬
‫ال رس التابق ، يتتم و الــ‪ session‬لعسـل مينانينيـة تداصـل بـين الستـتم و يالتـيرفر ، فلقـ قلنـا أن‬
‫الـ‪ http‬ال يدفر لنا مينانينية لعسل تداصل ، فإذا طلـ الستـتم و صـف ة مـن التـيرفر فـإن التـيرفر يقـدو‬
 ‫بإععائه ما أرا يينتهي عن ذلك فال يعرف إن كان هد نفس الستتم و أي ليس هد ... أل ل ذلك تـ انجـا‬
   ‫تقنية الـ‪ session‬أل ل عسل تقنية تداصل بين الستتم و يالسدق ، فبإختعاعتك مثال ا أن تقدو بت يـ عـ‬
‫زيارات متتم و معين لصف تك ليدو ياح أي ألخبدع أي لس ة معينـة مـن الدقـ .... أي يسننـك عسـل متجـر‬
‫إلنتريني بتيط يتتعي الستتم و شرا ع ة أشيا فعة ياح ة من السدق ييندن على تداصل بينه يبين‬
                                ‫السدق عن ما يقدو بإضافة مجترى إلي خلة التتدق أي حلف مجتريات.‬

‫األمثلـة البتـيعة ، خـأقدو بـالتنل عـن كيفيـة‬    ‫قبل أن أتنل عن كيفية اختم او الـ‪ Session‬يإععا بعـ‬
                                                                          ‫إع ا الـ‪ session‬م الـ‪. PHP‬‬

                                                                    ‫اعدادات الـ‪ session‬في الـ‪PHP‬‬
‫لني تتتعي التعامل م الـ‪ session‬بجنل ي يج عليك أن تتعرف على بع اإلع ا ات التي في ملف‬
                                                                                         ‫الـ‪php.ini‬‬
‫فيه بالـ‪ session‬هناك حدالى 19 إع ا يلنن لن نتعرق إليها كلها بل‬  ‫عن ما تفتح السلف ختج قتساا خاصاا‬
              ‫خنتنل عن األخاخية يالسهسة منها فقط كب اية لنا للتعرف على الـ‪ session‬يكيفية عسله .‬

                                                                                 ‫اع ا طريقة التمزين‬
‫)‪session.save_handler (files | mm | user‬‬

                                          ‫ختج هلت العبارة منتدبة في السلف كالتالى بجنل افتراضي :‬
‫‪session.save_handler = files‬‬
                          ‫يهلا اإلع ا يقدو بت ي طريقة التمزين للـ‪ session‬يهناك ثالث حاالت للتمزين :‬

                                                          ‫9 - التمزين في ملفات عا ية على التيرفر :‬
‫‪session.save_handler = files‬‬
                                                                      ‫2 - التمزين على ذاكرة التيرفر :‬
‫‪session.save_handler = mm‬‬
      ‫3 - التمزين بعريقة أخري معرفة يمعينة من قبل الستتم و مثل التمزين في قداع البيانات يهلا ما‬
                                              ‫خدف نقدو بالتفصيل عنه بع النالو عن قداع البيانات :‬
‫‪session.save_handler = user‬‬
‫يج أن تأخل في اعتبارك ع السلفات التـي خـيقدو الــ‪ session‬بتمزينهـا عنـ اخـتم امك لأعـ ا األيل‬
                                            ‫ياإلفتراضي خاصة عن ما يندن ع الزيار بالسئات أي اآلالف .‬

             ‫ق يندن اختعسال اللاكرة أخرع يلنن السجنلة أنه من التهل متح البيانات منها ببتاطة .‬

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

                                          ‫بدض قيسة هلت الماصية إلى ‪files‬‬      ‫اللي افترضه اآلن أنك قس‬
                                                                                     ‫إع ا منان التمزين‬
‫)‪session.save_path (path/to/directory‬‬
                                            ‫هلت الماصية مفي ة إذا كن ق ضبط اإلع ا التابق إلى ‪files‬‬
‫يـ منـان التمـزين بعيـ اا‬   ‫تقدو هلت الماصية بت ي منان التمزين على التيرفر يمن األفضل أن تقـدو بت‬
                                                       ‫عن مجل التيرفر لني تسن تصفح هلت السلفات .‬

                                                                              ‫اإلنجا التلقائي للـ‪session‬‬
‫)1 | 0( ‪session.auto_start‬‬
‫هلا اإلع ا يقدو بت ي إذا ما كان الـ‪ session‬خيت إنجاؤت تلقائياا عن كل زيارة للسدق أي ألي صـف ة مـن‬
‫صف اته ب ين إ راج كد الـ‪ session‬في كل صف ة ... يعلى ذلك فإنك تقدو بدضـ القيسـة إلـى (9) إذا أر ت‬
                                                                                               ‫ذلك .‬
  ‫يعلى إفتراض أنك ال ت تاج إلى أن تجعل الـ‪ PHP‬يقدو بعسـل ‪ session‬لنـل صـف ة تلقائيـاا يمـن ييـر طلـ‬
                                                               ‫فتتقدو بدض قيسة هلا اإلع ا الى (0)‬


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

‫4‪fc94ad8b1ee49ef79c713ee98ac1fcc‬‬
                                                ‫هناك طريقتين يتتعي بها الـ‪ PHP‬متابعة الـ‪ SID‬للستتم و :‬
                                                     ‫9 - عن طريق الستابعة يالتمزين بتتلتل في الندكيز .‬
                                                 ‫2 - عن طريق اتباع رق السعرف بعندان الصف ة في االنترن .‬

                                                                         ‫خنأخل أمثلة عن كال العريقتين :‬

                                                                            ‫9 - اختم او الندكيز‬
‫بالعب هلت هي أكثر العرق شيدعاا لل صدل على ترابط بين الستـتم و يالسدقـ يهـي األخـهل ، يلنـن‬
‫يج أن تض في اعتبارك أن الستتم و ق يندن ق ألغي أي من ميزة النـدكيز فـي الستصـفح أي قـ ينـدن‬
                                                                      ‫متصف ه ال ي ع الندكيز .‬
                   ‫خل في اعتبارك أن بع الستصف ات ال تتسح بأن يزي حج الندكيز عن 5 كيلدباي .‬

‫باخـتم او‬     ‫معرفـة معلدمـات عنهـا قبـل البـ‬     ‫هناك بع اإلع ا ات البتيعة في ملف ‪ php.ini‬التـي يجـ‬
                                                                                ‫الـ‪ session‬م الندكيز :‬
‫)1 | 0( ‪session.use_cookies‬‬
‫ماذا كان يسننك اختم او الندكيز م الـ‪ session‬أي ال يعن يض القيسة (0) فهلا يسنعـك‬     ‫هلت الماصية ت‬
‫من اختم او الندكيز م الـ(‪ )session‬يأما اذا كان قيسته (9) فهلا يتسح باختم او الندكيز م الـ‪session‬‬
‫)‪session.name (Default: PHPSESSID‬‬
  ‫ـ‬    ‫ـ‬                           ‫ـ‬       ‫ـ‬
 ‫هـلا اإلعـ ا يق ـدو بت يـ اخ ـ النـدكيز ال ـلي خـي تف ب ـرق السعـرف (‪ )SID‬ياإلع ـ ا االفتراضـي ه ـد‬
                                                   ‫ـ‬    ‫ـ‬        ‫ـ‬                 ‫ـ‬              ‫ـ‬
             ‫‪ PHPSESSID‬يلن اقدو بتغيير هلا اإلع ا لني تتتعي فه السثال اللي خأطرحه بع قليل‬

‫)0 :‪session.cookie_lifetime (Default‬‬
‫يقدو هلا اإلع ا بت ي الس ة التي خيبقي فيها الندكيز اللي ي تف بقيسة الــ(‪ )SID‬ياإلعـ ا االفتراضـي‬
              ‫هد صفر ، أي أنه خيت متح الندكيز تلقائياا بع ايالق الستتم و لنافلة الستصفح مباشرة‬

‫)/ :‪session.cookie_path (Default‬‬
            ‫بتغيير قيسته ي عه كسا هد‬    ‫تمزين الندكيز له .. ال تق‬   ‫ي متار يمين يت‬    ‫يقدو هلا اإلع ا بت‬
‫)‪session.cookie_domain (Default: null‬‬
 ‫تمزين النـدكيز لصـال ه .. يالقيسـة االفتراضـية هـي ‪ ، null‬ال تقـ‬      ‫يمين يت‬   ‫يقدو هلا اإلع ا بتعريف اخ‬
                                                                                                   ‫بتغييرها‬

‫ض في اعتبارك انه اذا كان قيسه االع ا (‪ )session.use_cookies‬تتايي ياح فان ال اعي الخت عا ال الة‬
                ‫)(‪ set_cookie‬إلع ا الندكيز بل خيت اع ا ها تلقائياا بداخعة الـ‪PHP‬‬

                                                        ‫2 - اإلضافة أيالنتابة إلى عندان الصف ة‬
‫أن طريقته خهلة يمفي ة في‬       ‫اا ري‬
                               ‫إن إضافة عندان الـ‪ SID‬إلى عندان الصف ة يعتبر من األشيا البجعة‬
                                      ‫حالة ما إذا كان الندكيز يير م عدو في الستصفح بجنل ي‬
                                                                                       ‫مثال :‬
‫<‪>a href="configure.php?<?=SID?>">Go to the configuration page</a‬‬
          ‫بهلت العريقة نقدو بإضافة الستغير السر عي ‪ SID‬اللي خيقدو بإععا رق معرف للستتم و .‬

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

‫?<‬
‫;)(‪session_start‬‬
‫;)"‪session_register("zx‬‬
‫;)"‪session_register("co‬‬
‫;01=‪$zx‬‬
‫;++‪$co‬‬
‫;">‪ '."<br‬مرحبا بك في مدقعنا أيها الزائر النري ' ‪echo‬‬

‫; ‪=". $co‬ع زياراتك لهلت الصف ة" ‪echo‬‬
‫;">‪echo "<br‬‬
‫;'>‪</a‬الصف ة الثانية>"‪echo '<a href="php2.php‬‬
‫>?‬
             ‫اقص بالجلتة هي الـ(‪ )session‬يإن كان التر سة يير ص ي ة يلنن فقط نأخلت كسصعلح .‬
                         ‫متغير الجلتة هد الـ(‪ )session-variable‬أي متغير الـ‪ session‬أي خسه ما شئ .‬

                                                                                                   ‫الجرح‬
‫يقدو هلا التنرب في الب ايـة بإنجـا متغيـر اخـسه (‪ )zx‬يمتغيـر اخـسه (‪ )co‬يقسنـا بإععـا القيسـة (09)‬
  ‫للستغير (‪ )zx‬يقسنا بزيا ة القيسة السد د ة (يهي الصفر) في (‪ )co‬بداح يكتبنا مرحبا بك ايها الزائـر النـري‬
‫في مدقعنا ، ث قلنا له إن ع زياراتك لهلت الصـف ة هـي قيسـة الستغيـر( ‪ ) co‬ثـ اععينـات رابـط للصـف ة‬
                                                                                                  ‫الثانية .‬
‫في الداق إن هلت الستغيرات يقيسها يت االحتفاظ بها في كدكيز لـه اخـ خـام قسنـا بت يـ ت خـابقاا مـن‬
                                               ‫ملف ‪ ، PHP.ini‬يهلا الندكيز ي تف بقيسة الـ‪ SID‬للـ‪. session‬‬

                              ‫بقيسة الستغيرات ألننا ب أنا بنلسة الـ:‬    ‫ن ن ال نقدو بإخبار الـ‪ PHP‬أين خي تف‬
‫;)(‪session_start‬‬
               ‫يعلى هلا فإن الـ‪ PHP‬خيفه أنه خيقدو بتمزين القيسة في الندكيز المام بالـ‪. session‬‬
     ‫يث‬    ‫قسنا بجعل الستغير ‪ co‬كع ا بتيط لع السرات التي خدف نقدو بها يزيارة الصف ة فعن عسل ت‬
                                                               ‫للصف ة خيت زيا ة الع ا بسق ار ياح‬
‫;++‪$c‬‬
   ‫يطبعاا قبل زيا ة الع ا بقيسة ياح فإنه يت حتاب القيسة التابقة للستغير عن إنجا ت تلقائياا ... يمن ث‬
                                                                  ‫يت الزيا ة يبع ذلك طباعة القيسة .‬
                                                                                     ‫كتابة رق الـ‪SID‬‬
                                                         ‫‪php2.php‬‬   ‫اكت اآلن الند التالي ياحفظه باخ‬
‫?<‬
‫;)(‪session_start‬‬
‫;">‪echo $PHPSESSID ."<br‬‬
‫;‪echo $zx‬‬
‫>?‬
 ‫في هلت الصف ة نقدو بعباعة قيسـة الــ‪ SID‬يذلـك بعباعـة قيسـه الستغيـر ‪( $PHPSESSID‬الـلي هـد اخـ‬
                                                                         ‫الندكيز الماصة بالـ‪. ) session‬‬
 ‫بع ذلك قسنا في النهاية بعباعة قيسة الستغير ‪ $zx‬لني ألفـ نظـرك بـأن النـدكيز مـا زال ي ـتف بهـا يلـ‬
‫يفق ها ألننا ق ح نا اإلع ا في ملف ‪ php.ini‬المام بدق الندكيز الـ 0063 أي لس ت خاعة ثـ بعـ تلـك‬
                                        ‫التاعة خيت متح الندكيز يلن يسننك اختر اع قيسة أي متغير :‬
‫0063 = ‪session.cookie_lifetime‬‬
         ‫ياضف إلى معلدماتك أنه ال يسننك قرا ة القي للندكيز الماصة بالـ‪ session‬إال عن طريق إضافه األمر‬
‫;)(‪session_start‬‬
     ‫يج أن تب أ بهلا األمر ائساا إذا أر ت قرا ة قي الستغيرات التي ي تف بها الندكيز المام بالـ ‪. session‬‬

                                                                         ‫مسح متغير من الـ‪session‬‬
                                                            ‫كل ما عليك فعله هد اختم او هلت ال الة :‬
‫;)‪session_unregister(variable name‬‬
                                                  ‫تقدو بدض اخ الستغير في منان الـ(‪)variable name‬‬
                                                                                          ‫مثال :‬
‫;)”‪session_unregister(“brn‬‬

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

                                             ‫قراءة قيم المتغيرات في الـكوكيز الخاصة بالـ‪session‬‬
                                                              ‫كل ما عليك فعله هد اختم او ال الة :‬
‫;)(‪session_encode‬‬

                                                                                                 ‫مثال :‬
‫?<‬
‫;)(‪session_start‬‬
‫;)"‪session_register("bgcolor‬‬
‫;)"‪session_register("name‬‬
‫;)"‪session_register("email‬‬
‫;"‪$bgcolor = "#8080ff‬‬
‫;"‪$name = "alfareees almolthem‬‬
‫;"‪$email = "php@php.com‬‬
‫;)(‪$e = session_encode‬‬
‫;"‪print "The encoded string is: $e‬‬
‫>?‬

 ‫بهلا التنرب نندن ق أنهينا رخنا عن مق مة بتيعة للـ‪ . session‬هلت مجر مق مة يلني نتتعي أن‬
                                ‫نتعسق بالـ‪ session‬فيج علينا أن نتعل شيئاا عن قداع البيانات .‬

				
DOCUMENT INFO
Shared By:
Stats:
views:5
posted:2/3/2013
language:
pages:4
Description: book prigram and adsens and borsah