问答详情
源自:4-2 设置cookie

我在本地服务器上使用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-08 12:18

个回答

  • 慕沐7363818
    2018-08-13 23:26:46
    已采纳

    同学这个问题提的很好,之前我学的时候都没发现。查了些资料终于算弄明白了。(以上都是废话请忽略)

    同学如果你的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