这里发现
一只程序猿O(∩_∩)O
渴望用Hello World改变世界,喜欢电影,喜欢跑步,略带文艺的逗比程序猿一只!

php serialize无法反序列化的问题

今天在做项目时遇到一个问题,就是将一个数组用serialize函数序列化后,用POST方式提交到另一个页面后,无法用unserialize反序列化,后来通过字符串比对,发现双引号(“)被自动转义了,在网上查了下,原来是php.ini中magic_quotes_gpc项设置为on的原因(目测json_encode也会有这个问题)

这是手册中的解释
魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。当打开时,所有的 (单引号),(双引号),\(反斜线)和 NULL 字符都会被自动加上一个反斜线进行转义。这和 addslashes() 作用完全相同。
因此,通过get方式传递过来的字串与先前序列化后的字串并不相同,因此无法反序列化。这里有两种解决方案:
1.将php.ini中magic_quotes_gpc项设置为off
2.直接在php程序中使用set_magic_quotes_runtime(0);
3.参数接收以后先经过stripslashes()函数处理后再进行反序列化

转载请注明出处fullstackdevel.com:SEAN是一只程序猿 » php serialize无法反序列化的问题

分享到:更多 ()