လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင် unserialize function ကို အသုံးပြု. session data ကိုပြန်လည်တည်ဆောက်နည်း။ ဥပမာရှင်းလင်းချက်

PHP တွင် unserialize function ကို အသုံးပြု. session data ကိုပြန်လည်တည်ဆောက်နည်း။ ဥပမာရှင်းလင်းချက်

gitbox 2025-09-30

1 ။ session ကို ဘယ်လိုအလုပ်လုပ်သလဲ

PHP Session သည် အသုံးပြုသူအချက်အလက်များကိုဆာဗာပေါ်ရှိအသုံးပြုသူအချက်အလက်များကိုထူးခြားသော session ID ကို အသုံးပြု. သိမ်းဆည်းထားသည်။ အသုံးပြုသူတစ် ဦး သည်တောင်းဆိုသည့်အခါတိုင်း PHP သည် session ID ကိုရှာဖွေပြီးသက်ဆိုင်ရာ session data ကို load လုပ်လိမ့်မည်။ ဒေတာများကိုများသောအားဖြင့် $ _Session hyperglobal variable ကိုမှတဆင့်ဝင်ရောက်သည်။

PHP သည်အချက်အလက်များကိုအရာ 0 တ်ထုများသို့မဟုတ် arrays များကို string strings strings strings string in သို့ပြောင်းလဲရန်အတွက်သိုလှောင်ထားသည့် Serialize function ကိုအလိုအလျောက်အသုံးပြုသည်

သို့သော်တစ်ခါတစ်ရံတွင်ကျွန်ုပ်တို့သည်ဤ serialized ဒေတာများကိုတိုက်ရိုက် 0 င်ရောက်ခြင်းသို့မဟုတ်၎င်းတို့အားကိုယ်တိုင်လုပ်ချင်သည်


2 ။ unserialize function ကိုခြုံငုံသုံးသပ်ချက်

serialized strings များကို PHP variable များသို့ပြောင်းလဲရန် unialialize function ကိုအသုံးပြုသည်။

 <span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-title function_ invoke__">unserialize</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span> [, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$options</span></span><span> = [] ] )
</span></span>

parameter သည်ဖော်ပြချက်:

  • $ ဒေတာ : deserialize ဖို့ string ကို။

  • $ ရွေးစရာများ - အပို deserialization control ကိုထောက်ပံ့ပေးသော optional parameter (PHP 7+ အထောက်အပံ့) ။ ဥပမာအားဖြင့် deserialization ခွင့်ပြုသည့်အတန်းကိုသတ်မှတ်နိုင်သည်။

Value ကိုပြန်သွားပါ

  • အောင်မြင်သောအခါ deserialized variable ကိုပြန်လည်ရောက်ရှိစေပြီးပျက်ကွက်သည့်အခါ မှားယွင်းသောအယူမှား ပြန်ပို့သည်။


3 ။ ဥပမာ - Session Data ကိုကိုယ်တိုင်ကိုယ်ကျ serialize နှင့် deserialize deserialize

အဆင့် 1: session data သိုလှောင်မှုကိုတုပပါ

ကျွန်ုပ်တို့တွင်အခြေခံအသုံးပြုသူအချက်အလက်အချို့ပါ 0 င်သောအသုံးပြုသူထုရှိသည်ဆိုပါစို့။ ကျွန်ုပ်တို့သည်အရာဝတ်ထုကိုကိုယ်တိုင် 0 န်ဆောင်မှုပေးပြီး၎င်းကို session တစ်ခုတွင်သိမ်းဆည်းထားလိမ့်မည်။

 <span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();

</span><span><span class="hljs-comment">// အသုံးပြုသူအရာဝတ်ထုတစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">User</span></span><span> {
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$email</span></span><span>;

    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$name</span></span></span><span>, </span><span><span class="hljs-variable">$email</span></span><span>) {
        </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;name = </span><span><span class="hljs-variable">$name</span></span><span>;
        </span><span><span class="hljs-variable language_">$this</span></span><span>-&gt;email = </span><span><span class="hljs-variable">$email</span></span><span>;
    }
}

</span><span><span class="hljs-comment">// instantiate အသုံးပြုသူအရာဝတ်ထု</span></span><span>
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">User</span></span><span>(</span><span><span class="hljs-string">'John Doe'</span></span><span>, </span><span><span class="hljs-string">'[email protected]'</span></span><span>);

</span><span><span class="hljs-comment">// အသုံးပြုသူအရာဝတ်ထုကို serialize လုပ်ပါ session</span></span><span>
</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'user_data'</span></span><span>] = </span><span><span class="hljs-title function_ invoke__">serialize</span></span><span>(</span><span><span class="hljs-variable">$user</span></span><span>);
</span></span>

အထက်ပါကုဒ်တွင် အသုံးပြုသူ အတန်းကိုဖန်တီးပြီးအသုံးပြုသူအရာဝတ်ထု John Doe ကိုသိမ်းဆည်းခြင်းနှင့်၎င်းကို $ _Session ['user_Data') တွင်သိမ်းဆည်းထားသည်။

အဆင့် 2: Session Data ကို restore လုပ်ပါ

ဒေတာများကို session တွင်သိမ်းထားသည်နှင့်တပြိုင်နက်၎င်းကိုနောက်ဆက်တွဲတောင်းဆိုမှုများတွင်ပြန်လည်ရယူနိုင်သည်။ unserialize function ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည် session တွင်သိမ်းဆည်းထားသော serialized data များကိုမူလအရာဝတ်ထုပုံစံသို့ပြန်ယူနိုင်သည်။

 <span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();

</span><span><span class="hljs-comment">// စစ်ဆေးကြည့်ရှု session မဆိုရှိပါသလား 'user_data' အချက်များ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'user_data'</span></span><span>])) {
    </span><span><span class="hljs-comment">// ပင်လယ်အေထက် session အချက်များ</span></span><span>
    </span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-title function_ invoke__">unserialize</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'user_data'</span></span><span>]);

    </span><span><span class="hljs-comment">// output ကိုအသုံးပြုသူသတင်းအချက်အလက်</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Name: '</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>-&gt;name . </span><span><span class="hljs-string">'&lt;br&gt;'</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Email: '</span></span><span> . </span><span><span class="hljs-variable">$user</span></span><span>-&gt;email . </span><span><span class="hljs-string">'&lt;br&gt;'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'No user data found in session.'</span></span><span>;
}
</span></span>

ဒီကုဒ်ထဲမှာ $ _Session ['user_Data'] တည်ရှိရှိမရှိပထမ ဦး ဆုံးစစ်ဆေး။ အကယ်. ၎င်းတည်ရှိပါက အသုံးပြုသူ အရာဝတ်ထုကိုပြန်လည်ထူထောင်ရန်နှင့်ထိုအရာဝတ်ထု၏ဂုဏ်သတ္တိများကိုထုတ်ယူရန် unserialize function ကိုအသုံးပြုသည်။


4 ။ unserialize function ကိုအသုံးပြုခြင်းအပေါ်မှတ်စုများ

လုံခြုံရေးပြ issues နာများ

unserialize function ကိုအသုံးပြုသောအခါလုံခြုံရေးပြ issues နာများကိုအထူးဂရုပြုရမည်။ အထူးသဖြင့်စိတ်မထားသောသတင်းရင်းမြစ်များမှဒေတာများကိုစွန့်ခွာသောအခါ၎င်းသည်အရာဝတ်ထုဆေးထိုးတိုက်ခိုက်မှုများကိုဖြစ်ပေါ်စေနိုင်သည်။ ၎င်းသည်တိုက်ခိုက်သူအားအန္တရာယ်ရှိသော serialized ဒေတာကိုတည်ဆောက်ခြင်းဖြင့်အန္တရာယ်ရှိသောလုပ်ငန်းများကိုလုပ်ဆောင်ရန်ခွင့်ပြုနိုင်သည်။ ထို့ကြောင့်အဆင် သင့်မဖြစ်စေရ သည့်အခါထိုကဲ့သို့သောပြ problems နာများကိုရှောင်ရှားရန်လုံခြုံရေးအစီအမံများကိုထည့်ရန်အကြံပြုသည်။

PHP 7+ တွင် deserialized classes ကိုယာယီ ခွင့်ပြုထားသော အတန်းများကိုခွင့်ပြုထားသည်။ ဥပမာအားဖြင့်, ကန့်သတ်ချက်သည် အသုံးပြုသူ အတန်းများကိုသာ deserire လုပ်နိုင်သည်။

 <span><span><span class="hljs-variable">$options</span></span><span> = [</span><span><span class="hljs-string">'allowed_classes'</span></span><span> =&gt; [</span><span><span class="hljs-string">'User'</span></span><span>]];
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-title function_ invoke__">unserialize</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'user_data'</span></span><span>], </span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>

ဤနည်းအားဖြင့် အသုံးပြုသူ အတန်းအစား၏အရာဝတ်ထုများကိုသာစွန့်ပစ်နိုင်သည်။ အခြားအတန်းများကိုပိတ်ဆို့ခံရလိမ့်မည်။

deserialization ကာလအတွင်းလိုက်ဖက်တဲ့ပြ issues နာများ

unserialize သည် Cross-version သို့မဟုတ် Cross-server php ပတ်ဝန်းကျင်တွင်လိုက်ဖက်တဲ့ပြ issues နာများကိုတွေ့ကြုံခံစားနိုင်သည်။ ဥပမာအားဖြင့်, Class သည်မတူညီသောဗားရှင်းပြောင်းလဲမှုရှိပါက deserialization ပျက်ကွက်နိုင်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန် developer များသည် JSONS_CETDED နှင့် JSON_Decode ကို အခြားနည်းလမ်းများအဖြစ်အသုံးပြုရန်အတွက်အထူးသဖြင့်ရိုးရှင်းသောဒေတာအဆောက်အအုံများပါ 0 င်သည်။