网站地图    收藏   

主页 > 后端 > php资料库 >

magic_quotes_gpc对cookie序列化的影响_自学php网

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 1.问题:项目数据需要序列化保存在cookie中,然后再获得cookie的数据反序列,获得原数据 PHP Code复制内容到剪贴板 $a[0] = array(key=哈 逻); $a[1] = array(key=哈 逻); $jsona = json_encode($a); setcookie...

1.问题:项目数据需要序列化保存在cookie中,然后再获得cookie的数据反序列,获得原数据

PHP Code复制内容到剪贴板
$a[0] = array("key"=>"哈 逻");
$a[1] = array("key"=>"哈 逻");
$jsona = json_encode($a);
setcookie("testcookie","");
setcookie("testcookie",$jsona);
var_dump($jsona,true); //正常取值
var_dump(json_decode($_COOKIE['testcookie'],true)); //取不到值

在没有经过cookie赋值时,正常反序列化。经过cookie之后,取到值为空
2.分析:

PHP Code复制内容到剪贴板
$a[0] = array("key"=>"哈 逻");
$a[1] = array("key"=>"哈 逻");
$jsona = json_encode($a);
var_dump($jsona); //string(50) "[{"key":"\u54c8 \u903b"},{"key":"\u54c8 \u903b"}]"
setcookie("testcookie","");
setcookie("testcookie",$jsona);
var_dump($_COOKIE['testcookie']); // string(62) "[{\"key\":\"\\u54c8 \\u903b\"},{\"key\":\"\\u54c8 \\u903b\"}]"
var_dump(json_decode($_COOKIE['testcookie'],true));

对比了一下数据,经过cookie处理后多了几个//
解决方法:

PHP Code复制内容到剪贴板
var_dump(json_decode(stripslashes($_COOKIE['testcookie']),true));
var_dump(json_decode(str_replace("\\","",$_COOKIE['testcookie']),true));

总结:magic_quotes_gpc在开启的情况下,会影响通过get|post|cookies获得的数据.所以我们在get|post|cookies处理数据的时候,
首先判断magic_quotes_gpc开启情况
1>在开启情况下,处理数据需要stripslashes
2>在没有开启情况下,接受数据先addslashes,处理数据stripslashes

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论