نتناول في هذا الدرس
إعدادات Session في مل php.ini ,
توضيح الدوال الخاصة بتغيير هذه الاعدادات ,
استخدام الكوكيز مع الجلسات ,
توضيح استخدام الدالى session_set_save_handler
والتي ستكون موضوع الدرس القادم
الجزء الاول من الدرس
اهم الدوال التي تساعد في التحكم بالجلسات وقيمها الافتراضية
session.save_path "/tmp"
مسار الجلسة في الاوضع الافتراضي تحفظ في ملف tmp
اذا كنت تستخدم وندز يجب عليك تعديل المسار الى
c:\WINDOWS\temp
session.name "PHPSESSID"
اسم الجلسة المستخدمة
session.save_handler "files"
معرفة مكان تخزين الجلسة في الاوضع الافتراضي في ملفات وتستطيع تعديلة الى قاعدة بينات بواسطة دوال خاصة بك
session.auto_start "0"
تشغيل الجلسة تلقائي اذا كان القيمة 1 في الوضع الافتراضي صفر
session.gc_maxlifetime "1440"
وتعني اقصى عمر للبينات المخزنة في الجلسة
والرقم 1440 يشير الى عمر البينات بعدها لن تصلح للاستخدام ثم تتم ازالتها
_____ استخدام الكوكيز مع الجلسات _____
session.cookie_lifetime "0"
وقت حفظ هوية الجلسة على كبيوتر الزائر والقيمة صفر تعني انه بمجرد ان يغادر يتم الغاء هوية الجلسة من جهازة
session.cookie_path "/"
المسار الذي تريد فيه ضبط الكوكيز الخاص بالجلسة
session.cookie_domain ""
تحديد العنوان الذي يتصل بالكوكيز
session.cookie_secure ""
هذه الدالة اذا تم تفعيلها يعني ان الكوكيز لن يرسل بواسطة اتصال عادي HTTP
session.use_cookies "1"
استخدام الكوكيز مع الجلسات عند القمية واحد
session.use_only_cookies "0"
استخدام الكويكز فقط مع الجلسات في جهاز الزائر
session_get_cookie_params
تعيد هذة اعدادات الكوكيز المستخدم مع الجلسة
بواسطة هذه الدالة
session_set_cookie_params
يمكن ان تعيد ضبط اعدادات الكوكيز المستخدم مع الجلسات كما لو كنت تستخدم setcookie
وتاتي بهذه الصورة
كود:
session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure]]] )
session.referer_check ""
مصدر القدوم لمعرف الجلسة
session.cache_limiter "nocache"
مستوى الحماية للجلسة ويعاد ضبطة بدالة خاصة هي
session_cache_limiter
يستخدم قبل البدء في الجلسة مثال
كود PHP:
<?php
session_cache_limiter('private');
$cache_limiter = session_cache_limiter();
echo "تم تحويله الى : $cache_limiter";
?>
session.cache_expire "180"
عمر مستوى الحماية بدقائق تابع لدالة السابقة
ويعاد ضبطة بهذة الدالة
session_cache_expire
مثال
كود:
$expire=60*60*24*7*52; # sec, min, hours, days, weeks
session_cache_expire($expire);
session.use_trans_sid "0"
استخدام معرف الجلسة في العنوان اذا كانت القيمة تساوي واحد
هذة بعض الدوال الخاصة باعدادات الجلسات
ويمكن التحكم بها وتغييرها بشكل موقت بستخدام الدالة
ini_set
مثال : نقوم بتمرير الدالة التي نريد تعديل قيمتها ثم نضع القيمة المعدلة لها
كود:
ini_set("session.use_trans_sid", 0);
______
اهم الدوال المستخدمة في التعامل مع الجلسات
session_decode
تقوم هذه الدالة بالحاق بينات جديدة للجلسة او التعديل على بينات موجودة بواسطة تمرير متغير الجلسة الذي تريد تعديلة او اضافته على هذا الدالة
session_encode
عرض البينات المخزنة في الجلسة وتحويلها من مصفوفة الى سلسلة
---------------
session_destroy
تستخدم هذه الدالة في تدمير الجلسة اي حذف الملف بصورة نهائية
ملاحظة
يظهر خطاء عند استخدام هذه الدالة في حالة عدم الخروج من الجلسة بصورة نهائية
لتجنب هذا الخطاء : ابداء الجلسة في كل ملف او جزء من برنامجك بداية مستقلة
session_id
تعيد هذة الدالة معرف الجلسة ويمكن استخدامة بشكل يدوي في المتصفح
مثال
كود PHP:
<?php
$session = session_id();
print "<a href=index.php&s=$session>صفحة البداية </a>";
?>
session_is_registered
التحقق من تسجيل بينات في الجلسة
session_name
اسم الجلسة وهنا تعيد ضبط اسم الجلسة بهذه الدالة مثال
كود PHP:
<?php
/* set the session name to WebsiteID */
$previous_name = session_name("rafiaphp");
echo "The previous session name was $previous_name";
?>
session_readonly
تقراء بينات الجلسة بدون الاطلاع عليها قرائة داخل البرنامج
session_register
تسجيل بينات في الجلسة ويمكن تسجيلها بضبط قيمة المصفوفة
$_SESSION او المصفوفة الاقدم $HTTP_SESSION_VARS
مثال لتسجيل بينات داخل الجلسة
كود PHP:
<?php
$barney = "rafiaphp";
session_register("barney");
// الطرقة الثانية
$_SESSION["zim"] = "An invader from another planet.";
//الطريقة الثالثة
$HTTP_SESSION_VARS["spongebob"] = "He's got square pants.";
?>
session_save_path
تعديل المسار لحفظ ملف بينات الجلسة قبل بداية الجلسة
session_start
هذه هي دالة بدء الجلسة ويجب ان لا يسبقها فراغ خارج النص البرمجي او شفرة html وأغلب دوال التعديل في العدادات يجب ان تسبقها ان لم يكن كلها
session_unregister
تقوم هذة الدالة بالغاء تسجيل متغير الجلسة عكس ما تقوم به الدالة
session_register
ومع تجربتي لهذة الدالة session_unregister لم تنجح في الغاء متغير الجلسة
session_unset
هذه هي الدالة الناجحة 100% في الغاء جميع متغيرات الجلسة بمجرد استخدام مباشر لها
session_set_save_handler
هذه الدالة التي كانت السبب في هذا الدرس 
بواسطة هذه الدالة نقوم بضبط اعدادات جديدة للجلسات
اولها تغيير مسار حفظ الجلسة اي نقوم بهيكلة النظام مرة اخرى
ويجب انشاء دوال خاصة ثم نقوم بتمريرها على الدالة السابقة
session_set_save_handler ( string open,
string close,
string read,
string write,
string destroy,
string gc )
اولا نقوم بانشاء دالة open في هذه الدالة يتم تمرير قيمتين
الاولى مسار الحفظ path والثانية اسم الجلسة name
ثانيا close
دالة لاغلاق ماتم فتحة
ثالثا read
قرائة المتغيرات وهذه الدالة يجب ان تعيد متغير اما بقيمة او فارغ حتى تتم العملية بشكل مثالي
بعكس الدوال السابقة والتي تعدي صح او خطأ true او false
ويتم تمرير معرف الجلسة على دالة القرائة
رابعا write
دالة كتابة البينات ويتم تمرير معرف الجلسة ثم تمرير البينات
خامسا destroy
دالة تدمير بينات الجلسة او حذف نهائي للجلسة اذا خرجت من الجلسة نهائيا
سادسا الدالة gc
هذه الدالة مهمه ويجب كتابتها بشكل يناسب استخدامك
لان عملها يعتبر ذاتي وتستخدم في تدمير الجلسات التي انتها وقتها على سبيل المثال في نظام الملفات يجب ان تكتب دالة تقارن وقت استخدام ملف الجلسة واقصى وقت لحفظ ملفات الجلسة وفي الدرس القادم مثال تطبيقي ودالة كتبتها لا تعمل على وندز بشكل الصحيح
_______
دروس تتحدث عن الجلسات
http://www.phpvillage.com/p.phppage=0&idp=53
http://www.phpvillage.com/p.phppage=0&idp=63
http://www.swalif.net/softs/showthread.php...&threadid=44936
المصدر
http://www.rafiaphp.com/news.php?action=view&id=46