လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Multibyte ဇာတ်ကောင် encoding နှင့်ဆက်ဆံရာတွင် Get_magic_quotes_GPC အတွက်မကြာခဏမေးထားသောမေးခွန်းများနှင့်ဖြေရှင်းနည်းများ

Multibyte ဇာတ်ကောင် encoding နှင့်ဆက်ဆံရာတွင် Get_magic_quotes_GPC အတွက်မကြာခဏမေးထားသောမေးခွန်းများနှင့်ဖြေရှင်းနည်းများ

gitbox 2025-09-18

PHP တွင် Get_Magic_quotes_GPC သည် magic_quotes_gpc configuration item ကိုဖွင့်ရှိမရှိစစ်ဆေးသော function တစ်ခုဖြစ်သည်။ Magic_Quotes_GPC သည် SQL ဆေးထိုးခြင်းများကိုကာကွယ်ရန် Form input input, url သို့မဟုတ် cookies များမှအချက်အလက်များကိုအလိုအလျောက်မှလွတ်မြောက်ရန်အသုံးပြုသော PHP setting ဖြစ်သည်။ သို့သော် Multi-byte character encoding (UTF-8 ကဲ့သို့သော) တွင် get_magic_quotes_gpc ၏အပြောင်းအလဲအတွက် Get_magic_quotes_GPC ကို ပြုပြင်ခြင်းသည်အထူးသဖြင့်အင်္ဂလိပ်မဟုတ်သောဇာတ်ကောင်အစုံများအတွက်မမျှော်လင့်သောပြ problems နာအချို့ကိုဖြစ်ပေါ်စေသည်။

1 ။ get_magic_quotes_gpc ၏အခန်းကဏ်။

Get_magic_quotes_GPC သည် PHP Magic_quotes_GPC ချိန်ညှိချက်များကိုစစ်ဆေးလိမ့်မည် အကယ်. Magic_quotes_GPC ကို ဖွ င့်ပါက PHP သည် ဒေါ်လာ _GET , $ _post နှင့် $ _ _cookie မှအချက်အလက်များကိုအလိုအလျောက်မှလွတ်လိမ့်မည်။ ဆိုလိုသည်မှာတစ်ခုတည်းသောကိုးကားချက် ( ' ), နှစ်ဆကိုးကားချက်များ ( " ) နှင့် backslash (") နှင့် backslash ( \) ) နှင့် Backslash (\)) နှင့် backslash ( \ )) သည် Backslash (\ t

2 ။ Multi-byte ဇာတ်ကောင် encoding ပြ problem နာ

Magic_quotes_GPC သည် Multibyte ဇာတ်ကောင် encoding (UTF-8 ကဲ့သို့သော) နှင့်ဆက်ဆံရာတွင်မမျှော်လင့်သောရလဒ်များအချို့ကို ဦး ဆောင်လမ်းပြနိုင်သည်။ UTF-8 encoding သည် Multi-byte စာလုံးများကိုဖောက်ထွင်းနိုင်သည့်အနေဖြင့် backslash များကိုမှားယွင်းစွာထည့်သွင်းနိုင်သည့်တစ်ခုတည်းက byte character sets များကိုအဓိကအားဖြင့်ဖွဲ့စည်းထားသည့်တစ်ခုတည်းသော byte character sets များကိုအဓိကအားဖြင့်အဓိကအားဖြင့်အဓိကအားဖြင့်ဖြစ်သည်

ဥပမာအားဖြင့်:

ပုံစံထည့်သွင်းမှုသည်တရုတ်ဇာတ်ကောင်တွင် "ဟဲလို" ဟုဆိုပါစို့။ အကယ်. Magic_Quotes_GPC ကို ဖွင့်ထားလျှင်၎င်းသည် encoded byte မြစ်ကမ်းပါးတွင် backslash ကိုအချို့သော bytes များပေါ်ရှိ Backslash ကိုထည့်သွင်းထားပြီး,

3 ။ PHP Deprecate Magic_quotes_GPC ကဘာကြောင့်လဲ။

Magic_Quotes_GPC သည် အစောပိုင်းကာလများတွင် SQL Injection ကိုကာကွယ်ရန်ဒီဇိုင်းပြုလုပ်ထားသော်လည်း PHP ကိုစဉ်ဆက်မပြတ်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်အတူဤဖွဲ့စည်းမှုကိုမရှိတော့ပါ။

  • ၎င်းသည် Multibyte ဇာတ်ကောင် encoding ကိုမှန်ကန်စွာမဖြေရှင်းနိုင်ပါ။

  • ၎င်းသည် Extrame ဇာတ်ကောင်များထပ်တိုးလာပြီး developer များကို input data များလုပ်ဆောင်သည့်အခါအပိုပြောင်းပြန်လုပ်ရန်ဖြစ်ပေါ်စေသည်။

  • ခေတ်သစ်ဒေတာဘေ့စ်မေးမြန်းချက်များအတွက်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအသုံးပြုပြီး Magic_quotes_GPC ကိုမှီခိုခြင်းမရှိဘဲ SQL ထိုးဆေးကိုထိရောက်စွာကာကွယ်နိုင်သည်။

ထို့ကြောင့် PHP 5.4.0 ပြီးနောက် Magic_quotes_GPC ကို လုံးဝစွန့်ပစ်ခဲ့ပြီး PHP 7.0.0 တွင်လုံးဝဖယ်ရှားပစ်ခဲ့သည်။

4 ။ Multibyte ဇာတ်ကောင် encoding နှင့်ဆက်ဆံရာတွင်ကိုင်တွယ်ဖြေရှင်းသည့်အခါဖြေရှင်းချက်

4.1 Magic_quotes_GPC ကို ပိတ်ထားပါ

ပထမ ဦး စွာ Magic_quotes_GPC ကို ပိတ်ထားပါ။ PHP configuration file ( php.ini ) ကိုစစ်ဆေးခြင်းဖြင့်၎င်းကိုပိတ်ထားနိုင်သည်။

 <span><span><span class="hljs-attr">magic_quotes_gpc</span></span><span> = </span><span><span class="hljs-literal">Off</span></span><span>
</span></span>

ထို့အပြင်သင်သည် Get_magic_quotes_GPC () ကို PHP Code တွင်သုံးနိုင်သည်။ Setting ကိုလက်ရှိဖွင့်ထားခြင်းရှိမရှိဆုံးဖြတ်ရန် Enable လုပ်ထားလျှင်သင်ကိုယ်တိုင်ထွက်ပြေးလွတ်မြောက်သောဇာတ်ကောင်များကိုကိုယ်တိုင်ဖယ်ရှားနိုင်သည်။

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">get_magic_quotes_gpc</span></span><span>()) {
    </span><span><span class="hljs-variable">$_GET</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'stripslashes'</span></span><span>, </span><span><span class="hljs-variable">$_GET</span></span><span>);
    </span><span><span class="hljs-variable">$_POST</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'stripslashes'</span></span><span>, </span><span><span class="hljs-variable">$_POST</span></span><span>);
    </span><span><span class="hljs-variable">$_COOKIE</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(</span><span><span class="hljs-string">'stripslashes'</span></span><span>, </span><span><span class="hljs-variable">$_COOKIE</span></span><span>);
}
</span></span>

4.2 သင့်တော်သောစာလုံး Encoding ကိုသုံးပါ

Form input ကိုထုတ်ထည့်သောအခါ client နှင့် server သည်တူညီသောအက်ခရာ encoding ကိုအသုံးပြုပါ။ UTF-8 ကိုအကြံပြုသည်။ ၎င်းကို HTML စာရွက်စာတမ်းတွင်သတ်မှတ်ထားသည့်ဇာတ်ကောင်ကိုသတ်မှတ်ခြင်းဖြင့်ပြုလုပ်နိုင်သည်။

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">meta</span></span></span><span> </span><span><span class="hljs-attr">charset</span></span><span>=</span><span><span class="hljs-string">"UTF-8"</span></span><span>&gt;
</span></span>

တစ်ချိန်တည်းမှာပင် PHP တွင် MB_ConVert_encoding function ကို PHP တွင်အသုံးပြုပါ။

 <span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'auto'</span></span><span>);
</span></span>

4.3 ပြင်ဆင်ထားသော SQL ထုတ်ပြန်ချက်များကိုအသုံးပြုပါ

SQL injection တိုက်ခိုက်မှုများကိုကာကွယ်ရန်အတွက် Magic_QuTes_GPC ကို အလိုအလျောက်လွတ်မြောက်ရန်အတွက်ကြိုတင်ပြင်ဆင်ထားသည့် SQL ထုတ်ပြန်ချက်များကိုအမြဲတမ်းအသုံးပြုသင့်သည်။ ဤနည်းလမ်းသည် encoding ပြ problem နာကိုဖြေရှင်းရုံသာမက SQL Injection ကိုထိထိရောက်ရောက်ကာကွယ်နိုင်သည်။

ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ရန် PDO သို့မဟုတ် MySQLI ကိုသုံးပါ။

 <span><span><span class="hljs-comment">// အသုံးပြုPDO</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE username = :username"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</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-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();

</span><span><span class="hljs-comment">// အသုံးပြုMySQLi</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE username = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"s"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>

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

Get_magic_Quotes_GPC နှင့် Magic_quotes_GPC နှင့် MOND PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် Magic_quotes_GPC ကိုမထောက်ခံပါ။ Multi-byte ဇာတ်ကောင် encoding ၏လုပ်ဆောင်မှုအတွက်အချက်အလက်များ၏မှန်ကန်မှုနှင့်လုံခြုံမှုကိုသေချာစေရန် Escape နှင့်ဇာတ်ကောင် encoding ကိုအထူးဂရုပြုသင့်သည်။ အကောင်းဆုံးလုပ်ရမည့်အချက်မှာ Magic_quotes_GPC ကို disable လုပ်ရန်ဖြစ်သည်။