DEDECMS中文注册会员无法打开空间的解决方法

解决中文注册的会员空间打不开问题

这个问题我也很苦恼,不过还是被解决了。大家分享下哈。

其实说到底还是个字符编码转换问题。

因为汉字没有在判断uid值时出现了错误,导致系统无法识别用户,所以发生了“你访问的用户可能已经被删除!”错误

方法是

在“member\config.php”文件的最后,PHP结束之前添加 isUTF8($str)函数

function isUTF8($str){

$length=strlen($str);

for($i=0;$i<$length;$i++){

$high=ord($str{$i});

if(($high==0xC0)||($high==0xC1)){

return false;

}elseif($high<0x80){

continue;

}elseif($high<0xC0){

return false;

}elseif($high<0xE0){

if(++$i>=$length)

return true;

elseif(($str{$i}&"\xC0"😉=="\x80"😉

continue;

}elseif($high<0xF0){

if(++$i>=$length){

return true;

}elseif(($str{$i}&"\xC0"😉=="\x80"😉{

if(++$i>=$length)

return true;

elseif(($str{$i}&"\xC0"😉=="\x80"😉

continue;

}

}elseif($high<0xF5){

if(++$i>=$length){

return true;

}elseif(($str{$i}&"\xC0"😉=="\x80"😉{

if(++$i>=$length){

return true;

}elseif(($str{$i}&"\xC0"😉=="\x80"😉{

if(++$i>=$length)

return true;

elseif(($str{$i}&"\xC0"😉=="\x80"😉

continue;

}

}

}

return false;

}

return true;

}

然后修改“member\index.php”中的代码:将

$tmpstr = @gb2utf8($uid);

$tmpstr2 = @utf82gb($tmpstr);

if($tmpstr2==$uid) $uid = $tmpstr;

修改为

if(!isUTF8($uid)) $uid = @gb2utf8($uid);

问题解决。

注明:本文为星速云原创版权所有,禁止转载,一经发现将追究版权责任!

(0)
上一篇 2022年5月30日 上午4:08
下一篇 2022年5月30日 上午4:08

相关推荐

发表评论

登录后才能评论
问答社区 QQ客服
微信客服
微信客服
分享本页
返回顶部