سؤال php جلسة
مرحبا جالس اتعلم php
وصادفت شخص يسوي هذا في بداية العمل . وش الفايدة من هذا وهل راح يخرب شي يعني لو اردت اجعل شخص يسجل دخول لشهر بالكوكيز هل هذا يمنع ؟ وعندي سؤال ثاني الوظيفة موضوعه اخر شي وتم استدعائه فوق هل هذا شي خاص بالphp ولا كيف طريقته كيف يعرفه ان فيه داله تحت
<?php
ini_set('session.use_only_cookies',1);
ini_set('session.use_strict_mode',1);
session_set_cookie_params([
'lifetime'=> 1800,
'domain'=>'localhost',
'path'=>'/','secure'=>true,'httponly'=>true
]);
session_start();
if (!set($_SESSION['last_regeneration']>=$interval)) {
reg_session_id();
}else{
$interval=60*30;
if (time()-$_SESSION['last_regeneration']>=$interval) {
reg_session_id();
}
}
function regenerate_session_id(){
session_regenerate_id();
$_SESSION['last_regenertion']=time();
}
لنبدأ بالإجابة على أسئلتك واحدًا تلو الآخر:
ما الفائدة من إعدادات الجلسة (Session Settings) في PHP؟
1. session.use_only_cookies=1: هذا الإعداد يضمن استخدام الكوكيز فقط لنقل معرفات الجلسات بين العميل والخادم. يمنع هذا الخيار استخدام الطرق الأخرى مثل تمرير معرف الجلسة في URL، مما يعزز من أمان التطبيق.
2. session.use_strict_mode=1: هذا الإعداد يضمن أن PHP لن يستخدم معرف جلسة غير موجود كمعرف جلسة صالح. بمعنى آخر، يجب أن يتم إنشاء معرف الجلسة من قبل الخادم ولا يُقبل معرف الجلسة الذي يُرسل من العميل إلا إذا كان موجودًا بالفعل. هذا يساعد في منع بعض أشكال هجمات الجلسة.
هل هذه الإعدادات تمنع استخدام الكوكيز لتتبع جلسة المستخدم لمدة شهر؟
لا، هذه الإعدادات لا تمنعك من استخدام الكوكيز لأغراض أخرى مثل تسجيل الدخول لفترة طويلة. ما تفعله هذه الإعدادات هو تعزيز الأمان لجلسات PHP. يمكنك ضبط عمر الكوكيز (lifetime) في session_set_cookie_params لتحديد مدة بقاء الجلسة نشطة.
بخصوص تعريف الدوال في PHP واستدعائها قبل تعريفها:
أما عن استدعاء الوظيفة فوق، فالPHP يقوم بتحليل الشفرة من أعلى لأسفل، فيرى الوظيفة ويعرف أنه بعد استدعائها سيتم تنفيذها.
ولكن يوجد بعض الملاحظات والتصحيحات على الكود، الدالة معرفة باسم regenerate_session_id لكنك تستدعي reg_session_id. يجب أن يتطابق اسم الدالة عند التعريف والاستدعاء.
التعليقات