လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> SessionHandler :: Create_sid ပြန်လာတန်ဖိုးခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် debugging နည်းစနစ်

SessionHandler :: Create_sid ပြန်လာတန်ဖိုးခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် debugging နည်းစနစ်

gitbox 2025-06-07

PHP တွင် session processing ယန္တရားကိုစိတ်ကြိုက်ပြုပြင်သည့်အခါကျွန်ုပ်တို့သည် sessionhandlerinterface ကို အကောင်အထည်ဖော်ခြင်းသို့မဟုတ် sessionhander အတန်းကိုအမွေဆက်ခံခြင်းဖြင့် session သိုလှောင်မှုယုတ္တိဗေဒကိုစိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။ သူတို့ထဲမှ sessionhander :: create_sid () သည် session id ကိုထုတ်လုပ်ရန်အသုံးပြုသော rewract ်ထုနည်းပါးသောနည်းလမ်းဖြစ်သည်။ ဤနည်းလမ်း၏ပြန်လာတန်ဖိုးကိုနားလည်ခြင်းနှင့်၎င်း၏ရည်ရွယ်ချက်သည်ရှုပ်ထွေးသောအစည်းအဝေးယန္တရားများကို debugging လုပ်ရန်အထူးအရေးကြီးသည်။

1 ။ sessionhandler ::: cree_sid () လုပ်ပေး?

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

2 ။ ပြန်လာတန်ဖိုးမှာအဘယ်လိုအပ်ချက်များနှင့်တွေ့ဆုံသင့်သနည်း။

Create_sID () ဖြင့်ပြန်လာသော string သည်အောက်ပါအချက်များနှင့်ကိုက်ညီရမည်။

  1. ထူးခြားမှု - ၎င်းသည်အချိန်အတိုင်းအတာတစ်ခုအတွင်းထပ်ခါတလဲလဲမလုပ်ရ။

  2. ကြိုတင်ခန့်မှန်း။ မရနိုင်ပါ - သင်အလွယ်တကူမခန့်မှန်းနိုင်ပါ။

  3. session.sustus_strict_mode = 1 : တင်းကြပ်သော mode ကိုဖွင့်ထားသည့်အခါ, Retriped Session ID ကိုသိုလှောင်ထားပြီးဖြစ်ပါက၎င်းကိုငြင်းပယ်ခံရလိမ့်မည်။

အထက်ပါအခြေအနေများနှင့်မကိုက်ညီသောအခြေအနေများသည် session ပ conflicts ိပက်ခများသို့မဟုတ်လုံခြုံရေးအားနည်းချက်များကိုဖြစ်ပေါ်စေနိုင်သည်။

3 ။ Create_sID ၏ပြန်လာတန်ဖိုးကို debugging အတွက်သိကောင်းစရာများ ()

Debug _SID () ကို Debugg -sid () ကိုတိုက်ရိုက် -saught-`သတင်းအချက်အလက်နှင့်ခြေရာခံရန်ယာယီထည့်ရန်ဖြစ်သည်။

1 ။ Session ID ကိုထုတ်လုပ်ရန် logging ကိုအသုံးပြုပါ

 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 လုပ်ထားသည်။

2 ။ set-cookie header ကိုကြည့်ရှုရန် browser debugging tool ကိုသုံးပါ

Set-cookie ၏ တုန့်ပြန်မှုခေါင်းစဉ်ကိုကြည့်ရှုရန်သင်၏ browser ရှိ developer tools များ (Chrome's Network tag) ကိုသုံးပါ။ ဆာဗာမှပြန်လာသော session id သည်သင်မျှော်လင့်ထားသည့်အကြောင်းအရာများသည်သင်မျှော်လင့်ထားသည့်အကြောင်းအရာများဖြစ်သည်။

ဥပမာ, ခေါင်းစီးကိုပြန်လာခြင်းကဒီလိုမျိုးဖြစ်လိမ့်မယ်။

 Set-Cookie: PHPSESSID=82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73; path=/; HttpOnly

3 ။ session ကိုအောင်မြင်စွာဖန်တီးခဲ့ရှိမရှိစစ်ဆေးပါ

ဤ ID နှင့်ပါသော session data သည် (ဤကဲ့သို့သော Redis, File System, Database ကဲ့သို့သောသိုလှောင်မှု backend တွင်သိမ်းဆည်းထားခြင်းရှိမရှိစစ်ဆေးပါ။ ဥပမာအားဖြင့်, သင်သည် session ကို redis သို့သိမ်းဆည်းပါက

 $sessionKey = "PHPREDIS_SESSION:sess_$sid";

သငျသညျ command ကိုသုံးနိုင်သည်:

 GET PHPREDIS_SESSION:sess_82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73

session key တည်ရှိရှိမရှိစစ်ဆေးရန်။

4 ။ Debug Premput ကို Encapsult

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
(
)

5. Session ID ကိုသယ်ဆောင်ရန် URL ကိုသုံးပါ (Debugging အတွက်သာ)

အကယ်. client သည် cookies များကိုမပံ့ပိုးပါက Session ID ကို URL သို့ url သို့ပူးတွဲနိုင်သည်။

 https://gitbox.net/debug.php?PHPSESSID=82c4ad45fef0c9f0ed72cd3e78c0f5e5c7e35a8f70e94dfd6a5f1a15f2b19e73

သို့သော် မှတ်ချက် ။ ။ ဤနည်းလမ်းသည်ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင် debugging အတွက်သာသင့်လျော်သည်။ Session ယိုစိမ့်မှုကိုရှောင်ရှားရန်အတွက်ထုတ်လုပ်မှုဝန်းကျင်သည် URL များကိုလုပ်ဆောင်ရန် URLs များကိုပိတ်ထားသည်။

4 ။ debugging စဉ်အတွင်းနောက်ထပ်အကြံပြုချက်များ

  • 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