php1.php:
<?php
// setcookie('test','cokkie的值');
setrawcookie("test","这里是rawcookie");
php2.php:
<?php
if(isset($_COOKIE['test']))
echo "success,这里是testcookie!cookie的值是:".$_COOKIE['test'];
然后在浏览器先运行php1再运行php2,结果完全正常。不用手动解码呀?难道是版本更新后这个函数被修改了?
同学这个问题提的很好,之前我学的时候都没发现。查了些资料终于算弄明白了。(以上都是废话请忽略)
同学如果你的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
<?php$value = 'here is rawcookie';//setcookie('rawcook',$value);setrawcookie("rawcook",rawurlencode($value)); ?>
outrawcookie.php
<?phpif($_COOKIE['rawcook']){ echo "success,the value is :".$_COOKIE['rawcook'];} ?>
结果:success,the value is :here is rawcookie
另外你好像混淆了:
rawurlencode
setrawcookie