เช่น เครื่องเกมขายดีในญี่ปุึ่น "Pokemon Nobunaga's Ambition แชมป์"
เมื่อโยนเข้าฟังก์ชั่น addslashes(); มันจะถูกแปลงเป็น
เครื่องเกมขายดีในญี่ปุึ่น \"Pokemon Nobunaga\'s Ambition แชมป์\" ให้อัตโนมัติ
ที่นี้ถ้าจะนำออกมาใช้ php จะมีฟังก์ชั่นอยู่ตัวหนึ่งคือ strip_slashes(); ซึ่งจะทำหน้าที่ถ้าเครื่องหมาย \ ออกเพื่อแสดงผลได้อย่างถูกต้องนั่นเอง
ทีนี้ปัญหามันมีอยู่ว่าเมื่อเราเอาประโยคที่ได้จากฟังก์ชั่น strip_slashes(); ไปแสดงใน Attribute Value ของ html นั้นจะเกิดอะไรขึ้นมาดูกัน
ยกตัวอย่าง Tag Input ละกัน
<input type="text" name="textbox1" value="" />
ทีนี้้ถ้าเกิดนำประโยคที่ได้จากฟังก์ชั่น strip_slashes(); ไปใส่ใน Value มันจะเป็นดังนี้
<input type="text" name="textbox1" value="เครื่องเกมขายดีในญี่ปุึ่น "Pokemon Nobunaga's Ambition แชมป์"" />
เห็นมั้ยคะว่าเกิดอะไรขึ้น มันจะผิด Well-Form ของ HTML ไปทันที แถมค่ามันจะขึ้นไม่ครบด้วยเนื่องจากมันถูกปิดด้วย Double Quote หน้าตัว P ใหญ่นั่นเอง
ทีนี้มาดูวิธีแก้กันดีกว่า
$myValue = htmlspecialchars($myValue, ENT_QUOTES, 'utf-8');
เนื่องจากฟังก์ชั่น htmlspecialchars มันจะแทนค่า Character พิเศษที่เราว่าด้วยค่าดังนี้
'&' (ampersand) becomes '&'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
''' (single quote) becomes ''' only when ENT_QUOTES is set.
'<' (less than) becomes '<'
'>' (greater than) becomes '>'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
''' (single quote) becomes ''' only when ENT_QUOTES is set.
'<' (less than) becomes '<'
'>' (greater than) becomes '>'
จากนั้นก็นำตัวแปร $myValue ไปใช้ แค่นี้เอง
<input type="text" name="textbox1" value="<?php echo $myVAlue; ?>" />
ลองดูค่ะ วันนี้ขอตัวแค่นี้ก่อน....ชะแว็บ !!!
ไม่มีความคิดเห็น:
แสดงความคิดเห็น