လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ပုံစံများကိုထပ်ခါတလဲလဲတင်ပြခြင်းများကိုမည်သို့ကာကွယ်ရမည် - လက်တွေ့ကျသောဖြေရှင်းနည်းများ

PHP ပုံစံများကိုထပ်ခါတလဲလဲတင်ပြခြင်းများကိုမည်သို့ကာကွယ်ရမည် - လက်တွေ့ကျသောဖြေရှင်းနည်းများ

gitbox 2025-06-18

1 ။ ပြ problem နာနောက်ခံ

Web application development တွင်ပုံစံများသည်အသုံးပြုသူများသည်စနစ်နှင့်အပြန်အလှန်ဆက်သွယ်ရန်အတွက်အရေးကြီးသောနည်းလမ်းဖြစ်သည်။ သို့သော်အသုံးပြုသူများသည်တစ်ခါတစ်ရံတွင်ပုံစံများကိုအကြိမ်များစွာတင်ပြထားပြီးဒေတာပုံတူပွားများသာမကစနစ်စွမ်းဆောင်ရည်နှင့်ဒေတာရှေ့နောက်ညီညွတ်မှုကိုလည်းသက်ရောက်နိုင်သည်။

2 ။ ဖြေရှင်းနည်း

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

2.1 Submit ခလုတ်ကိုပိတ်ထားပါ

Submit ခလုတ်ကို javascript code မှတဆင့် javascript code မှတဆင့် javascript code မှတဆင့် disable လုပ်ပါ။ အောက်ဖော်ပြပါသည်သက်ဆိုင်ရာနမူနာကုဒ်ဖြစ်သည်။

 
document.getElementById("submitBtn").disabled = true;
        

2.2 ထူးခြားသောအမှတ်အသားထုတ်ပေးသည်

ပုံစံကိုဖွင့်သောအခါထူးခြားသောအမှတ်အသားကိုထုတ်လုပ်ပြီး session သို့မဟုတ် cookie တွင်သိမ်းထားသည်။ ပုံစံကိုတင်ပြသည့်အခါအမှတ်အသားကိုအတူတကွတင်ပြပါ။ အကယ်. တည်ရှိပါက၎င်းသည်ထပ်ခါတလဲလဲတင်သွင်းမှုဖြစ်သည်။ ဤတွင်နမူနာကုဒ်ဖြစ်သည်။

 
// ထူးခြားသောအမှတ်အသားထုတ်လုပ်ရန်
$token = md5(uniqid(rand(), true));
// မှအမှတ်အသားကိုသိုလှောင်ပါsessionသို့မဟုတ်cookieအလယ်ပိုင်း
$_SESSION['form_token'] = $token;
// 在表单အလယ်ပိုင်း添加隐藏字段来存储标识符
echo "<input type='hidden' name='form_token' value='{$token}'>";
        

ဆာဗာဘက်မှတင်သွင်းမှုကိုအတည်ပြုသည့်အခါတင်သွင်းသောအမှတ်အသားသည်သိုလှောင်ထားသောအမှတ်အသားနှင့်ကိုက်ညီမှုရှိမရှိနှင့်နှိုင်းယှဉ်ပါ။

 
// တင်သွင်းမှတ်ပုံတင်ကိုရယူပါ
$submittedToken = $_POST['form_token'];
// သိုလှောင်ထားသောအမှတ်အသားကိုရယူပါ
$storedToken = $_SESSION['form_token'];
// နှစ်ခုအမှတ်အသားများတသမတ်တည်းရှိမရှိနှိုင်းယှဉ်
if ($submittedToken === $storedToken) {
    // ပုံစံတင်သွင်းမှုအပြောင်းအလဲနဲ့ execute လုပ်ပါ
    unset($_SESSION['form_token']);
} else {
    echo "ကျေးဇူးပြုပြီးပုံစံကိုအကြိမ်ကြိမ်မတင်ပါနှင့်";
}
        

2.3 စာမျက်နှာပြန်ညွှန်း

ပုံစံကိုတင်ပြပြီးနောက်ဆာဗာသည်အသုံးပြုသူအားအခြားစာမျက်နှာတစ်ခုသို့ (ဥပမာအောင်မြင်သောစာမျက်နှာကဲ့သို့) သို့ပြန်သွားနိုင်သည်။ ဤနည်းအားဖြင့်အသုံးပြုသူသည်စာမျက်နှာကိုလန်းဆန်းစေလျှင်သို့မဟုတ် commin page သို့ပြန်လည်ရောက်ရှိလျှင်ပင်ဆာဗာကိုကျူးလွန်သောကျူးလွန်မှုအသစ်တစ်ခုအဖြစ်ဆက်ဆံလိမ့်မည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 
// ထုတ်ယူခြင်းပုံစံတင်သွင်းမှုယုတ္တိဗေဒ
header("Location: success.php");
exit;
        

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

2.4 server-side နည်းပညာကိုအသုံးပြုခြင်း

ရှေ့တန်းအဆုံးဖြေရှင်းချက်အပြင်ကျွန်ုပ်တို့သည်ထပ်ခါတလဲလဲတင်ပြခြင်းများကိုတားဆီးရန်ဆာဗာဘေးထွက်နည်းပညာကိုလည်းအသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့် Database တစ်ခုစီအတွက်မှတ်တမ်းများကိုသိမ်းဆည်းရန်နှင့်ကျူးလွန်မှု၏ထူးခြားမှုကိုစစ်ဆေးရန်အသုံးပြုနိုင်သည်။

3 ။ အကျဉ်းချုပ်

အသုံးပြုသူများကိုပုံစံတင်သွင်းခြင်းမှကာကွယ်ရန်တားဆီးခြင်းသည် Web Development တွင်အရေးမကြီးပါ။ Submit ခလုတ်ကိုပိတ်ခြင်းဖြင့်ဤပြ problem နာကိုထိရောက်စွာဖြေရှင်းနိုင်ပြီးထူးခြားသောအမှတ်အသားများ, တိကျသောလိုအပ်ချက်များကိုအရသင့်လျော်သောဖြေရှင်းချက်ကိုရွေးချယ်ပြီးအသုံးပြုသူအတွေ့အကြုံကိုအကောင်းဆုံးရွေးချယ်ပါ။