最近對傳遞變數作了一個簡單的實驗,沒使用 urlencode() 函數時,只要遇到「 & 」等 HTML 特殊字元都難逃字串被截斷的命運:
test1.php
<?php
$txt = "A&B&C";
echo "<a href=\"test2.php?txt=".$txt."\">GO</a>";
?>

test2.php
<?php
echo $_GET['txt'];
?>

Demo
A


test1.php
<?php
$txt = "A&B&C";
echo "<a href=\"test2.php?txt=".urlencode($txt)."\">GO</a>";
?>

test2.php
<?php
echo $_GET['txt'];
?>

Demo
A&B&C

所以用 GET 方式傳變數,最好都先加上 urlencode(),尤其傳的內容是網址的話,& 出現機會大增,特別容易被截斷。接收變數時,PHP 會自動解碼,不需再加上 urldecode()。值得注意的是,字串被截斷的現象只發生在 $_GET,$_POST 傳遞的變數則沒有類似的問題。

(P.S. 以上現象發生於 HTML 特殊字元上:例 &、<、>... 等字元)
2008/01/08 00:02 2008/01/08 00:02
2008/01/08 00:02 

Trackback Address :: http://blog.raienet.com/trackback/388


[◀ PREV][1]... [58][59][60][61][62][63][64][65][66]... [410][NEXT ▶]