我在本地服务器上使用rawurlencode()没有手动编码,也正确显示了结果,,这是为什么。

来源:4-2 设置cookie

昨日雨

2018-08-08 12:18

php1.php:

<?php

// setcookie('test','cokkie的值');

setrawcookie("test","这里是rawcookie");


php2.php:

<?php

if(isset($_COOKIE['test']))

    echo "success,这里是testcookie!cookie的值是:".$_COOKIE['test'];


然后在浏览器先运行php1再运行php2,结果完全正常。不用手动解码呀?难道是版本更新后这个函数被修改了?


写回答 关注

1回答

  • 慕沐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

    昨日雨

    非常感谢!

    2018-08-15 00:22:32

    共 1 条回复 >

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181724 学习 · 2575 问题

查看课程

相似问题