我在本地服務器上使用rawurlencode()沒有手動編碼,也正確顯示了結果,,這是為什么。
php1.php:
<?php
// setcookie('test','cokkie的值');
setrawcookie("test","這里是rawcookie");
php2.php:
<?php
if(isset($_COOKIE['test']))
? ? echo "success,這里是testcookie!cookie的值是:".$_COOKIE['test'];
然后在瀏覽器先運行php1再運行php2,結果完全正常。不用手動解碼呀?難道是版本更新后這個函數被修改了?
2018-08-13
同學這個問題提的很好,之前我學的時候都沒發現。查了些資料終于算弄明白了。(以上都是廢話請忽略)
同學如果你的setrawcookie()函數第二個參數帶有? ?,; \t\r\n\013\014? ?其中的字符,你的php2.php就會提示如下:
Cookie values cannot contain any of the following ',; \t\r\n\013\014' ;
這里就要用到rawurlencode()對$value進行URL編碼(關于這個函數和url編碼自行百度)。
代碼如下:
setrawcookie.php
outrawcookie.php
結果:success,the value is :here is rawcookie
另外你好像混淆了:
rawurlencode
setrawcookie