PHP တွင် Serialize function သည် PHP variable များကို string များကို strings များအဖြစ်ပြောင်းလဲရန်အသုံးများသောနည်းလမ်းဖြစ်သည်။ သိုလှောင်မှုသို့မဟုတ်ပြန်လည်ရယူခြင်းတွင်သိုလှောင်ခြင်း, ဒေတာဘေ့စ်ထဲသို့အချက်အလက်များကိုစနစ်တကျသိုလှောင်ရန်နှင့်ဖြစ်နိုင်သောအဂတိလိုက်စားမှုဆိုင်ရာပြ issues နာများကိုရှောင်ရှားရန် PHP ၏ Serialize function ကိုမည်သို့အသုံးပြုရမည်ကိုဤဆောင်းပါးကရှင်းပြပါမည်။
Serialize function သည် PHP variable များကို string format များကိုသိမ်းဆည်းထားပြီးလွှဲပြောင်းနိုင်သည်။ Array တစ်ခုသို့မဟုတ်အရာဝတ်ထုတစ်ခုကိုဒေတာဘေ့စ်တစ်ခုအဖြစ်သိုလှောင်ရန်လိုအပ်သည့်အခါ PHP ၏ Serialize function သည်အလွန်အသုံးဝင်သည်။ သင်သည်ဤ string ကိုဒေတာဗေ့စ်ရှိကွက်လပ်တစ်ခုတွင်သိမ်းဆည်းပြီးနောက်ပိုင်းတွင်မူလခင်းကျင်းခြင်းသို့မဟုတ်အရာဝတ်ထုသို့ပြန်ယူရန် unserialize function ကိုသုံးနိုင်သည်။
ဥပမာအားဖြင့်, သင့်တွင်ခင်းကျင်းမှုတစ်ခုရှိသည်ဆိုပါစို့။
$data = array("name" => "Alice", "age" => 30, "city" => "New York");
၎င်းကို string တစ်ခုသို့ပြောင်းရန် Serialize function ကိုသုံးပါ။
$serializedData = serialize($data);
echo $serializedData;
output သည် string ကိုကိုယ်စားပြုမှုတစ်ခုဖြစ်လိမ့်မည်။
a:3:{s:4:"name";s:5:"Alice";s:3:"age";i:30;s:4:"city";s:8:"New York";}
အချက်အလက်များကို string တစ်ခုထဲသို့ပြောင်းလဲရန် Serialize function ကိုအသုံးပြုပြီးနောက်ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားနိုင်သည်။ အသုံးပြုသူကြိုက်နှစ်သက်မှုများကိုသိမ်းဆည်းရန် ဦး စားပေး သည့်နေရာများတွင်အသုံးပြုသော အသုံးပြုသူများကို အသုံးပြုသောရိုးရှင်းသောဒေတာဘေ့စ်စားပွဲတစ်ခုရှိသည်ဆိုပါစို့။ array အချက်အလက်များကိုကြိုးတပ်များသို့ပြောင်းရန် Serialize function ကို သုံး. ဒေတာဘေ့စ်သို့ထည့်သွင်းရန်သင်အသုံးပြုနိုင်သည်။
// သငျသညျဒေတာဘေ့စနှင့်ချိတ်ဆက်ရှိသည်ဆိုပါစို့
$data = array("theme" => "dark", "language" => "en");
$serializedData = serialize($data);
// ဒေတာဘေ့စ်စုံစမ်းမှုကို အသုံးပြု. ဒေတာထည့်ပါ
$sql = "INSERT INTO users (preferences) VALUES (:preferences)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['preferences' => $serializedData]);
ဤဥပမာတွင်အသုံးပြုသူ၏အကြိုက်များကို database ၏ preferences freating field တွင် serialized string တစ်ခုအဖြစ်သိမ်းဆည်းထားသည်။
ဒေတာဘေ့စ်မှသိမ်းဆည်းထားသော serialized data အချက်အလက်များကိုသင်ပြန်လည်ရယူသောအခါမူရင်း PHP ဒေတာအမျိုးအစားသို့ပြန်လည်ထူထောင်ရန် unserialize function ကိုသုံးပါ။ သင်အသုံးပြုသူ၏အကြိုက်များကိုရယူပြီး၎င်းကိုခင်းကျင်းရန်ထည့်သွင်းစဉ်းစားပါ။
// ဒေတာဘေ့စ်မှ Serialized ကြိုးများကိုပြန်လည်ရယူပါ
$sql = "SELECT preferences FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);
$row = $stmt->fetch();
// အသုံးပြု unserialize ဒေတာကို restore
$preferences = unserialize($row['preferences']);
print_r($preferences);
ဤအချိန်တွင် $ Preferences သည် Activityive ခင်းကျင်းဖြစ်လိမ့်မည်။
Array
(
[theme] => dark
[language] => en
)
Serialize နှင့် unserialize functions များကိုအသုံးပြုသောအခါအထူးသဖြင့်ဒေတာဘေ့စ်မှအချက်အလက်များထုတ်ယူသည့်အခါအလားအလာရှိသောအန္တရာယ်များကိုအထူးဂရုပြုရန်လိုအပ်သည်။
ဒေ တာ ဘေ့စ်များနှင့်စားပွဲများ၏ဇာတ်ကောင်များကိုမှန်ကန်စွာသတ်မှတ်ထားကြောင်းသေချာအောင်လုပ်ပါ။ ဒီလိုမှမဟုတ်ရင် serialized string ကိုကိုက်ညီတဲ့ဇာတ်ကောင် encoding ကြောင့်ဒေတာအကျင့်ပျက်ခြစားမှုကိုဖြစ်ပေါ်စေနိုင်သည်။
ဒေတာဘေ့စ်လုပ်ငန်းများလုပ်ဆောင်သောအခါအသုံးပြုသူမှထည့်သွင်းထားသောအချက်အလက်များကို SQL Query များသို့တိုက်ရိုက်ထည့်သွင်းခြင်းမပြုပါနှင့်။ SQL Injection တိုက်ခိုက်မှုများကိုရှောင်ရှားရန်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအမြဲတမ်းအသုံးပြုပါ။
unserialize function ကိုအသုံးပြုသောအခါသင်သည် deserialization ပျက်ကွက်ခြင်းကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဤအချိန်တွင် @ @ operator ကို သုံး. အမှားအယွင်းများကိုဖိနှိပ်ရန်နှင့် deserialization ရလဒ်သည် မှားယွင်းနေ သည်။
$preferences = @unserialize($row['preferences']);
if ($preferences === false) {
// deserialization ပျက်ကွက်,အမှားများကိုကိုင်တွယ်
echo "Failed to unserialize data.";
}
Serialize function သည်အလွန်အစွမ်းထက်သော်လည်းအချို့ကိစ္စများတွင် JSONS_CETDED နှင့် JSONS_Decode functions များကိုလည်းစဉ်းစားနိုင်သည်။ JSON format သည်များသောအားဖြင့်အခြားဘာသာစကားများနှင့်ပလက်ဖောင်းများနှင့်အပြန်အလှန်ဆက်သွယ်ရန်ပိုမိုလွယ်ကူသည်။
// အသုံးပြု json_encode နှင့် json_decode
$data = array("theme" => "dark", "language" => "en");
$jsonData = json_encode($data);
// ဒေတာဘေ့စ်ကိုသိမ်းထားပါ
$sql = "INSERT INTO users (preferences) VALUES (:preferences)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['preferences' => $jsonData]);
// ဒေတာဘေ့စ်မှပြန်လည်ရယူခြင်းနှင့်ပြန်လည်ရယူခြင်း
$sql = "SELECT preferences FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 1]);
$row = $stmt->fetch();
$preferences = json_decode($row['preferences'], true);
print_r($preferences);
JSON သည်အထူးသဖြင့်ပြင်ပစနစ်များနှင့်ဒေတာဖလှယ်မှုလိုအပ်သည့်အခါ သဘောတတ်ခြင်း ထက်ပိုမိုကျယ်ပြန့်စွာပြုလုပ်နိုင်သည်။
အကျဉ်းချုပ်
PHP ၏ Serialize function ကိုအသုံးပြုခြင်းသည်ရှုပ်ထွေးသောအချက်အလက်များကိုဒေတာဘေ့စ်တစ်ခုအဖြစ်အလွယ်တကူသိမ်းဆည်းနိုင်သည်။ SQL Injection ကိုကာကွယ်ရန်နှင့် deserialization အမှားများကိုကိုင်တွယ်ရန် Proprocessing ထုတ်ပြန်ချက်များကိုမှန်ကန်စွာဖော်ပြပါ။ အထူးသဖြင့်အခြားဘာသာစကားများသို့မဟုတ်ပလက်ဖောင်းများနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းအတွက် JSON_enCode နှင့် JSON_Decode ကို အခြားနည်းလမ်းများအဖြစ်အသုံးပြုသည်။