ThinkPHP 的 unserialize 出错及解决 June 7, 2010 / Fengzi

废话不多说,直接进入主题。

unserialize 在部分服务器环境(我测试的时候在Windows server环境下面是没问题的,在Linux下面就会出现这种问题)下可能会出现错误,原因是值存在特殊字符

为什么会出现特殊字符呢,其实这个问题是系统在 serialize 的时候将引号(或者是其他的符号,我遇到这种情况的时候是引号)转义了

知道了为什么,解决起来就快了,在 unserialize 之前先把变量用 stripslashes 过滤一遍就行了

ThinkPHP框架在部分Linux服务器环境下面可能就会出现这个问题导致多主题切换的时候不能保留在某个主题下面,这个时候就需要把ThinkPHP内核的functions.php里面的cookie方法的返回cookie值的那段代码的 unserialize 之前先把 $value 用 stripslashes 过滤一遍了

© Fengzi / 开发 / PHP, ThinkPHP

已有 6 条评论

  1. 叶子

    感谢,原来这是TP没考虑周到

    1. Fengzi

      @叶子, 哈哈~有点遗漏也在所难免嘛~

  2. 1毛

    “疯兄”,哥来你的Blog了,想要你的友链可以不?虽然我的网站很烂,很不好看的。http://sz.1maoflash.com
    早几天用WordPress做的。知道我是谁不?你要我加你那个网站的链接不?

    1. Fengzi

      @1毛, 老大,需要审核才能显示的,链接帮你做好了~

  3. 1毛

    搞个提示好不好!晕死了

    1. Fengzi

      @1毛, 我懒得去搞嘛