deader 发表于 2010-3-4 12:00:40

【已解决】版主!请教dx_auth出现unserialize()错误,如何解决?

本帖最后由 deader 于 2010-3-10 11:03 编辑

使用dx_auth,在登录后出现如下错误,请问如何解决,谢谢!


A PHP Error was encountered
Severity: Notice
Message: unserialize() : Error at offset 0 of 6 bytes
Filename: dx_auth/permissions.php
Line Number: 54


A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at C:\sites\system\libraries\Exceptions.php:166)
Filename: libraries/Session.php
Line Number: 662


A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at C:\sites\system\libraries\Exceptions.php:166)
Filename: helpers/url_helper.php
Line Number: 541

deader 发表于 2010-3-10 09:15:43

继续请教,等了几天了...

Hex 发表于 2010-3-10 10:23:03

dx_auth/permissions.php 54 行代码是什么,肯定是某些环境不符合,我对这个 dx 不熟悉,不过可以帮楼主分析一下。

deader 发表于 2010-3-10 10:26:42

function _unserialize($data)
      {
                $data = unserialize(stripslashes($data));      //54行
               
                if (is_array($data))
                {
                        foreach ($data as $key => $val)
                        {
                              $data[$key] = str_replace('{{slash}}', '\\', $val);
                        }
                        
                        return $data;
                }
               
                return str_replace('{{slash}}', '\\', $data);
      }

麻烦版主分析一下

Hex 发表于 2010-3-10 10:34:41

明显是 stripslashes($data) 这个返回的数据有问题,print_r 一下出错时候的 $data

deader 发表于 2010-3-10 10:36:29

解决了!
用base64_decode()来解决,分享一下,方法如下:

dx_auth/permissions.php
第39行 改为 return base64_encode(serialize($data));
第54行 改为 $data = unserialize(base64_decode(stripslashes($data)));

Hex 发表于 2010-3-10 10:54:11

呵呵,难道是有中文字符????

deader 发表于 2010-3-10 11:02:40

嗯,session里有中文字符
页: [1]
查看完整版本: 【已解决】版主!请教dx_auth出现unserialize()错误,如何解决?