【已解决】版主!请教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 继续请教,等了几天了... dx_auth/permissions.php 54 行代码是什么,肯定是某些环境不符合,我对这个 dx 不熟悉,不过可以帮楼主分析一下。 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);
}
麻烦版主分析一下 明显是 stripslashes($data) 这个返回的数据有问题,print_r 一下出错时候的 $data 解决了!
用base64_decode()来解决,分享一下,方法如下:
dx_auth/permissions.php
第39行 改为 return base64_encode(serialize($data));
第54行 改为 $data = unserialize(base64_decode(stripslashes($data))); 呵呵,难道是有中文字符???? 嗯,session里有中文字符
页:
[1]