PHP รับค่าจาก $_GET
วันนี้มาคุยเรื่อง PHP กันดีกว่าครับ ปรกติแล้วการรับส่งค่าตัวแปร query string
ที่รับมาจาก $_GET ในภาษา PHP มักจะไม่ได้มีปัญหาอะไรในการใช้งาน เช่น
abc.com?id=12345 เวลาที่เราเรียกใช้งานตัวแปรก็ $_GET[id] แบบนี้ปรกติ
ไม่น่ามีปัญหาอะไร แต่ว่าปัญหามันก็เกิดจนได้นะ คือจะเรียกว่าปัญหาก็ไม่เชิงนะ
คือ เป็นความมักง่ายของผมด้วยคือผมมีความคิดจะใส่เครื่องหมาย + เพิ่มลงไปใน
query string เช่น abc.com?id=12345+67890 ทีนี้มันก็เป็นปัญหาเพราะว่า
เวลาที่เรียกใช้งานตัวแปร $_GET[id] มันดันมีช่องว่างเกิดขึ้น 12345 67890
เครื่องหมาย + หายไป กลายเป็นว่ามีช่องว่าง space มาแทนที่ ผมเลยลองมานั่ง
อ่าน Manual ใน php.net ดูก็ถึงบางอ้อ คือ การส่งผ่านตัวแปรด้วย $_GET นั้น
ตัวของ PHP จะไปเรียกใช้งานฟังก์ชั่น urldecode() ทำให้ค่าของตัวแปรที่ถูกส่ง
ผ่านทาง $_GET ก็จะไม่เหมือนเดิมครับ พูดง่ายๆ ถ้ามีเครื่องหมาย + ติดมาใน
query string มันก็จะถูกแทนที่ด้วย space หรือถ้าเป็นเครื่องหมาย %## ก็จะ
ถูก encoding เพราะงั้นก็ต้องระวังเรื่องการใช้งานด้วยครับ
อ้างอิง – http://php.net/manual/en/reserved.variables.get.php