PHP တွင် session processing ယန္တရားကိုစိတ်ကြိုက်ပြုပြင်သည့်အခါကျွန်ုပ်တို့သည် sessionhandlerinterface ကို အကောင်အထည်ဖော်ခြင်းသို့မဟုတ် sessionhander အတန်းကိုအမွေဆက်ခံခြင်းဖြင့် session သိုလှောင်မှုယုတ္တိဗေဒကိုစိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။ သူတို့ထဲမှ sessionhander :: create_sid () သည် session id ကိုထုတ်လုပ်ရန်အသုံးပြုသော rewract ်ထုနည်းပါးသောနည်းလမ်းဖြစ်သည်။ ဤနည်းလမ်း၏ပြန်လာတန်ဖိုးကိုနားလည်ခြင်းနှင့်၎င်း၏ရည်ရွယ်ချက်သည်ရှုပ်ထွေးသောအစည်းအဝေးယန္တရားများကို debugging လုပ်ရန်အထူးအရေးကြီးသည်။
Create_sID () session_start () ကိုခေါ်သည့်အခါအလိုအလျောက်ဟုခေါ်သည်။ လက်ရှိတွင်ခိုင်လုံသော session ID မရှိပါ။ ၎င်း၏ရည်ရွယ်ချက်မှာထူးခြားသော session ID string အသစ်တစ်ခုကိုပြန်ပို့ရန်ဖြစ်သည်။ ပုံမှန်အကောင်အထည်ဖော်မှုသည် sessionsid_length နှင့် sessions_bits_per_per_per_per_per_Charter ကိုမြင့်မားသော ID များထုတ်လုပ်ရန်အတွက်အခြေခံမူ,
class MySessionHandler extends SessionHandler {
public function create_sid(): string {
return hash('sha256', random_bytes(32));
}
}
session_set_save_handler(new MySessionHandler(), true);
session_start();
အထက်ဖော်ပြပါကုဒ်များတွင် Sha-256 ကို အသုံးပြု. Sha-256 ကို သုံး. 32 byte ကျပန်းဒေတာများရှိသည်။
82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73
Create_sID () ဖြင့်ပြန်လာသော string သည်အောက်ပါအချက်များနှင့်ကိုက်ညီရမည်။
ထူးခြားမှု - ၎င်းသည်အချိန်အတိုင်းအတာတစ်ခုအတွင်းထပ်ခါတလဲလဲမလုပ်ရ။
ကြိုတင်ခန့်မှန်း။ မရနိုင်ပါ - သင်အလွယ်တကူမခန့်မှန်းနိုင်ပါ။
session.sustus_strict_mode = 1 : တင်းကြပ်သော mode ကိုဖွင့်ထားသည့်အခါ, Retriped Session ID ကိုသိုလှောင်ထားပြီးဖြစ်ပါက၎င်းကိုငြင်းပယ်ခံရလိမ့်မည်။
အထက်ပါအခြေအနေများနှင့်မကိုက်ညီသောအခြေအနေများသည် session ပ conflicts ိပက်ခများသို့မဟုတ်လုံခြုံရေးအားနည်းချက်များကိုဖြစ်ပေါ်စေနိုင်သည်။
Debug _SID () ကို Debugg -sid () ကိုတိုက်ရိုက် -saught-`သတင်းအချက်အလက်နှင့်ခြေရာခံရန်ယာယီထည့်ရန်ဖြစ်သည်။
public function create_sid(): string {
$sid = hash('sha256', random_bytes(32));
error_log("အသစ်တစ်ခုကို session တစ်ခုဖန်တီးပါ ID: $sid");
return $sid;
}
၎င်းသည်ထုတ်လုပ်ထားသော Sid တစ်ခုစီကို PHP အမှားမှတ်တမ်းသို့ရေးလိမ့်မည်။ Path သည်များသောအားဖြင့် /var/log/php_Errors.log သို့မဟုတ် php.ini မှတဆင့် configure လုပ်ထားသည်။
Set-cookie ၏ တုန့်ပြန်မှုခေါင်းစဉ်ကိုကြည့်ရှုရန်သင်၏ browser ရှိ developer tools များ (Chrome's Network tag) ကိုသုံးပါ။ ဆာဗာမှပြန်လာသော session id သည်သင်မျှော်လင့်ထားသည့်အကြောင်းအရာများသည်သင်မျှော်လင့်ထားသည့်အကြောင်းအရာများဖြစ်သည်။
ဥပမာ, ခေါင်းစီးကိုပြန်လာခြင်းကဒီလိုမျိုးဖြစ်လိမ့်မယ်။
Set-Cookie: PHPSESSID=82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73; path=/; HttpOnly
ဤ ID နှင့်ပါသော session data သည် (ဤကဲ့သို့သော Redis, File System, Database ကဲ့သို့သောသိုလှောင်မှု backend တွင်သိမ်းဆည်းထားခြင်းရှိမရှိစစ်ဆေးပါ။ ဥပမာအားဖြင့်, သင်သည် session ကို redis သို့သိမ်းဆည်းပါက
$sessionKey = "PHPREDIS_SESSION:sess_$sid";
သငျသညျ command ကိုသုံးနိုင်သည်:
GET PHPREDIS_SESSION:sess_82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73
session key တည်ရှိရှိမရှိစစ်ဆေးရန်။
Debug Page ကိုလက်ရှိ session ID နှင့် status ကိုကြည့်ရန်ယာယီဖန်တီးနိုင်သည်။
session_start();
echo "<pre>ယခု Session ID: " . session_id() . "</pre>";
echo "<pre>Session ကေြနပ်သော: ";
print_r($_SESSION);
echo "</pre>";
စာမျက်နှာကိုကြည့်ပြီးနောက် output သည်ဆင်တူသည် -
ယခု Session ID: 82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73
Session ကေြနပ်သော: Array
(
)
အကယ်. client သည် cookies များကိုမပံ့ပိုးပါက Session ID ကို URL သို့ url သို့ပူးတွဲနိုင်သည်။
https://gitbox.net/debug.php?PHPSESSID=82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73
သို့သော် မှတ်ချက် ။ ။ ဤနည်းလမ်းသည်ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင် debugging အတွက်သာသင့်လျော်သည်။ Session ယိုစိမ့်မှုကိုရှောင်ရှားရန်အတွက်ထုတ်လုပ်မှုဝန်းကျင်သည် URL များကိုလုပ်ဆောင်ရန် URLs များကိုပိတ်ထားသည်။
Session.Shuse_strict_Mode = 1 PHP ကိုလက်ရှိ Sids ကိုငြင်းပယ်ရန်အတင်းအကျပ်စေခိုင်းရန်။
session.save_park ကို configure လုပ်ပါ။ စာဖတ်ရန်လွယ်ကူပြီးမူရင်း session ဖိုင်ကိုကြည့်ရှုရန်လွယ်ကူစေရန်ရေးဆွဲရန်လွယ်ကူသည့်လမ်းညွှန်တစ်ခုသို့လမ်းညွှန်ပါ။
PHP.ini သို့မဟုတ် ORHTACCES တွင်အဆင့်မြင့်အမှားအယွင်းများကိုယာယီဖွင့်လှစ်ခြင်းနှင့်သစ်ထုတ်လုပ်ခြင်းကိုယာယီဖွင့်လှစ်ခြင်း။
error_reporting = E_ALL
display_errors = On
log_errors = On
error_log = /tmp/php_error.log