为了账号安全,请及时绑定邮箱和手机立即绑定

我在本地服务器上使用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,结果完全正常。不用手动解码呀?难道是版本更新后这个函数被修改了?


正在回答

1 回答

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

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

2 回复 有任何疑惑可以回复我~
#1

昨日雨 提问者

非常感谢!
2018-08-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信