|
|
|
สอบถามหน่อยครับ การใช้ $_SERVER["PHP_SELF"]; มันสามารถส่งค่าตัวแปรไปได้กี่ตัวอะครับตาม code นี้เลยครับ |
|
|
|
|
|
|
|
ทำไมไม่ใช้ Session แทนล่ะครับ
|
|
|
|
|
Date :
2013-12-16 06:37:49 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ส่งผ่าน GET มีข้อจำกัดครับ แต่จำไม่ได้ว่ากี่ตัว
เอาวิธีที่ Admin แนะนำดีกว่าครับ
|
|
|
|
|
Date :
2013-12-16 08:40:52 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่น่าจะเกี่ยวจำนวนตัวแปรหรือความยาวของ url เพราะถ้ามันยาวเกิน จะส่งไปไม่ได้เลย บราวเซอร์จะบอกว่า error
แต่อาจจะเป็นเพราะหากในบางครั้ง ตัวแปรตัวใดตัวหนึ่งมีข้อมูลที่มีตัวอักษรพิเศษเช่น & อยู่ในค่า จะทำให้การส่งค่าผ่าน url ผิดเพี้ยนไปครับ
สมมติ
<?php
$a = 'KitKat';
$b = 'Alfie';
?>
<a href="index.php?a=<?=$a?>&b=<?=$b?>">Click</a>
ก็จะได้ผลลัพธ์
<a href="index.php?a=KitKat&b=Alfie">Click</a>
ซึ่งเป็นการส่งค่าที่ถูกต้อง
แต่
<?php
$a = 'M&M';
$b = 'Smarty';
?>
<a href="index.php?a=<?=$a?>&b=<?=$b?>">Click</a>
ก็จะได้ผลลัพธ์
<a href="index.php?a=M&M&b=Alfie">Click</a>
จะถูกแปลความหมายผิด เพราะใน url (ส่วนที่อยู่หลังเครื่องหมาย ?) ตัวอักษร & นั้นจะหมายถึง "จุดสิ้นสุดของค่า" ของตัวแปร get
ดังนั้น a จะมีค่าเท่ากับ M แทนที่จะเป็น M&M
วิธีควรทำทุกครั้งเมื่อส่งค่าที่อาจจะมีค่าเป็นอะไรก็ได้ผ่าน url ให้ใช้ urlencode() หรือ rawurlencode() แปลงตัวอักษรพิเศษที่อาจจะมีอยู่ในค่า ก่อนที่จะทำเป็น url
<?php
$a = 'M&M';
$b = 'Smarty';
?>
<a href="index.php?a=<?=urlencode($a)?>&b=<?=urlencode($b)?>">Click</a>
จะได้ค่าที่ถูกแปลงให้เป็น % encoding (หากมีตัวอักษรพิเศษ) ซึ่งจะถูกแปลความหมายเป็นตัวอักษรที่ต้องการ โดยไม่แปลความหมายเป็นอย่างอื่น
จากตัวอย่างจะได้
<a href="index.php?a=M%26M&b=Alfie">Click</a>
|
|
|
|
|
Date :
2013-12-16 09:18:18 |
By :
K |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|