Tuesday, September 13, 2011

Magic Quotes GPC ใน kloxo คือ

คุณเคยสงสัยหรือไม่ว่า  Magic Quotes GPC  คืออะไร? แก้ไขตรงไหน? จำเป็นหรือไม่?
Magic Quotes GPC มีไว้เผื่อช่วยให้เราสามารถนำข้อมูล หลังจากที่เรา submit form ไป query ใส่ database ได้โดยไม่ error

ซึ่งการรับข้อมูลจาก form ต่างๆ  มีโอกาสที่ user จะกรอก Single quote (') หรือ Double quote (") เข้ามาในช่อง input box ของเราได้
ดังนั้นถ้าเรานำข้อมูลไปใช้โดยตรงทำให้มีโอกาส  query error ได้
ถ้าหาก   Magic Quotes GPC = On
จะมีการเติม \ เข้าไปที่หน้า Single quote หรือ Double quote ให้อัตโนมัต  ทำให้สามารถนำค่าไป query ได้ทันที
ดังนั้นการ query เราจึงต้องเช็คดังนี้
01if (get_magic_quotes_gpc()) {
02    $name = stripslashes($_POST['name']);
03}
04else {
05    $name= $_POST['name'];
06}
07 
08$name= mysql_real_escape_string($name);
09 
10$sql = "INSERT INTO table_name (name) VALUES ('$name')";
แต่ถ้าหากนำไปแสดงผลในส่วนที่ชนกับ Single quote หรือ Double quote ของ syntax บน html ล่ะ?
1// สมมุติให้  user กรอกค่าเข้ามาเป็น  "your name"
2// ดังนั้นถ้าหากเราจะแสดงค่า your name ที่ value จะเป็นดังนี้
3<input name="name">

แน่นอนว่าการแสดงผลเช่นนี้ผิด syntax ของ html ดังนั้นเราจึงอาจใช้  function  htmlspecialchars  ของ php มาช่วยก่อนที่จะแสดงผลบนค่าของ value จะทำให้สามารถแสดงผลออกมาได้ถูกต้อง

การแก้ไข Magic Quotes GPC

สามารถแก้ไข Magic Quotes GPC ได้ที่ file php.ini
1# php.ini seting to trun On/Off
2magic_quotes_gpc = On

หรือสามารถแก้ที่ file .htaccess ได้ดังนี้
1# .htaccess seting to trun On/Off
2php_flag magic_quotes_gpc off

ดังนั้นการ set magic_quotes_gpc จะจำเป็นหรือไม่ขึ้นอยู่กับ code ของเราเองว่าได้ครอบ mysql_real_escape_string ไว้หรือไม่เพื่อลองรับข้อมูลจาก user ที่กรอก Single quote หรือ Double quote เข้ามา

0 comments:

Post a Comment

 
Design by Laikeng | Bloggerized by Storesu - sutoday | Court