PDostatement :: Flechcolumn သည် PDO မှပေးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ ၎င်းသည်စုံစမ်းမှုရလဒ်အနေဖြင့်အချက်အလက်များအရဒေတာကော်လံတစ်ခုရရှိရန်အထူးအသုံးပြုသည်။ အခြား fetch နည်းလမ်းများနှင့်မတူဘဲ Fetchcolumn သည် စုံစမ်းမှုရလဒ်၏ပထမဆုံးကော်လံကိုသာပြန်လည်ပေးလိမ့်မည် ။
SQL Query များကိုကွပ်မျက်ခံရသည့်အခါအသုံးပြုသူ input ကို SQL ထုတ်ပြန်ချက်များသို့တိုက်ရိုက်ထည့်သွင်းပါကတိုက်ခိုက်သူသည်အထူးပြုလုပ်ထားသောသွင်းအားစုပြ problems နာများမှတဆင့်စုံစမ်းမှု၏မူလရည်ရွယ်ချက်ကိုကျော်လွှားနိုင်သည်။ PDO မှပေးသော parameter စည်းနှောင်ခြင်းယန္တရားကိုအသုံးပြုခြင်းသည်ဤအန္တရာယ်ကိုတားဆီးနိုင်သည်။
SQL Injection ကိုထိရောက်စွာတားဆီးရန် PDO ၏ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များနှင့် parameter binding ကိုသုံးရန်သော့ချက်ဖြစ်သည်။ SQL injection ပြ problems နာများကို SQL querty သို့တိုက်ရိုက်မတူဘဲ SQL query ကို SQL query သို့ parameter အဖြစ် parameter အဖြစ်ဖြတ်သန်းခြင်းဖြင့်ရှောင်ရှားနိုင်သည်။
PDostatement :: Finnolumn နှင့် preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုပြီးလုံခြုံစိတ်ချရသောမေးမြန်းစုံစမ်းမှုကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည့်ဥပမာတစ်ခုဖြစ်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
</span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">setAttribute</span></span><span>(PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>);
</span><span><span class="hljs-comment">// အသုံးပြုသူထည့်သွင်းမှုကို</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-variable">$_GET</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>];
</span><span><span class="hljs-comment">// Preprocessing ထုတ်ပြန်ချက်များကိုသုံးပါ,parameters တွေကိုချည်ထား</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT COUNT(*) FROM users WHERE username = :username"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bindParam</span></span><span>(</span><span><span class="hljs-string">':username'</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">PARAM_STR</span></span><span>);
</span><span><span class="hljs-comment">// တစ် ဦး စုံစမ်းမှု execute</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-comment">// စုံစမ်းမှုရလဒ်၏ပထမကော်လံရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$count</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetchColumn</span></span><span>();
</span><span><span class="hljs-comment">// output query ကိုရလဒ်များ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အသုံးပြုသူ '<span class="hljs-subst">$username</span></span></span><span>' အကောင့်အရေအတွက်ဖြစ်ပါတယ်: " . </span><span><span class="hljs-variable">$count</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'ဆက်သွယ်မှုမအောင်မြင်ပါ: '</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>အထက်ပါကုဒ်တွင် SQL Injection ကိုရှောင်ရှားရန် PDO ကြိုတင်အသုံးချသည့်ထုတ်ပြန်ချက်များကိုအသုံးပြုသည်။
ဒေတာဘေ့စ်ဆက်သွယ်မှု - ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုကို PDO အသစ် ဖြင့်ဖန်တီးပြီးအမှားအယွင်းများအားလုံးကိုဖမ်းရန်အမှားအယွင်းကိုချမှတ်သည်။
Preprocessing Statement: SQL Querys သည် SQL ၏တိုက်ရိုက်ခွဲစိတ်မှုကြောင့်ဆေးထိုးခြင်းကြောင့်ဖြစ်ပေါ်လာသောအန္တရာယ်များကိုကာကွယ်ရန်အတွက် SQL Conferces နှင့်သီးခြားစီခွဲထားရန် SQL Conferces နှင့်ခွဲထုတ်ရန် ပြင်ဆင်ခြင်း နည်းလမ်းကိုအသုံးပြုသည်။
Binding Parametersters: Bindaram Method ကိုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်သုံးစွဲသူ $ သုံးစွဲသူအမည် ဖြင့်ထည့်သွင်းထားသောတန်ဖိုးရှိ username parameter ကိုခညျြနှောငျ။ ဤသည်အသုံးပြုသူမှထည့်သွင်းထားသောတန်ဖိုးများကိုလုံခြုံစွာလုပ်ဆောင်ခြင်းနှင့် SQL query သို့တိုက်ရိုက်မထည့်သွင်းနိုင်ကြောင်းသေချာစေသည်။
ရလဒ်ကိုရယူပါ။ စုံစမ်းမှုရလဒ်အစုတစ်ခုလုံးကိုပြန်ပို့မည့်အစား (ဤဥပမာတွင်သုံးစွဲသူအကောင့်အရေအတွက်) ကိုရယူရန်အတွက် fltercolumn ကို သုံးပါ။
SQL ချုပ်ကိုရှောင်ကြဉ်ပါ။ Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသုံးပြုသူ input များကို splicing splicing sql မေးမြန်းချက်များသို့တိုက်ရိုက်ရှောင်ရှားခြင်းကိုလုံးဝရှောင်ရှားနိုင်သည်။ ဤသည် SQL injection ၏အဓိကအရင်းအမြစ်ဖြစ်သည်။ အသုံးပြုသူသည်မည်သည့်အန္တရာယ်ရှိသည့်အကြောင်းအရာကိုမည်သည့်အန္တရာယ်ရှိနေသည်, မှန်ကန်စွာထွက်ပြေးတိမ်းရှောင်ခြင်းနှင့်စုံစမ်းမှု၏တစ်စိတ်တစ်ပိုင်းမဟုတ်ဘဲ parameter အဖြစ်လွန်သွားလိမ့်မည်။
parameter သည် bindetere: အသုံးပြုသူမှထည့်သွင်းထားသောအချက်အလက်များကိုလုံခြုံစွာလုပ်ဆောင်ရန်သေချာစေရန် Bindaram သို့မဟုတ် BindveALAUS binding parameters များကိုသုံးပါ။ PDO သည် Input Values ၏ထွက်ပေါက်များကိုအလိုအလျောက်ကိုင်တွယ်ခြင်းနှင့်ဒေတာအမျိုးအစားများပြောင်းလဲခြင်းသည် SQL Injection တိုက်ခိုက်မှုသည် SQL Inject A ဖွဲ့သည် SQL ထုတ်ပြန်ချက်များကိုလိမ္မာပါးနပ်သောသွင်းအားစုများဆွဲဆောင်နိုင်သည်။
ရိုးရှင်းသော Code: Flechcolumn နည်းလမ်းကိုကော်လံတစ်ခုတည်းမှဒေတာများကိုရယူရန်အတွက်အထူးအသုံးပြုသည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
PDOStatement SQL