[织梦CMS] DEDECMS中文注册会员无法打开空间的解决方法

[复制链接]
查看: 3391|回复: 0
发表于 2019-8-9 18:32:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

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

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

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

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

  1. function isUTF8($str){
  2. $length=strlen($str);
  3. for($i=0;$i<$length;$i++){
  4. $high=ord($str{$i});
  5. if(($high==0xC0)||($high==0xC1)){
  6. return false;
  7. }elseif($high<0x80){
  8. continue;
  9. }elseif($high<0xC0){
  10. return false;
  11. }elseif($high<0xE0){
  12. if(++$i>=$length)
  13. return true;
  14. elseif(($str{$i}&"\xC0")=="\x80")
  15. continue;
  16. }elseif($high<0xF0){
  17. if(++$i>=$length){
  18. return true;
  19. }elseif(($str{$i}&"\xC0")=="\x80"){
  20. if(++$i>=$length)
  21. return true;
  22. elseif(($str{$i}&"\xC0")=="\x80")
  23. continue;
  24. }
  25. }elseif($high<0xF5){
  26. if(++$i>=$length){
  27. return true;
  28. }elseif(($str{$i}&"\xC0")=="\x80"){
  29. if(++$i>=$length){
  30. return true;
  31. }elseif(($str{$i}&"\xC0")=="\x80"){
  32. if(++$i>=$length)
  33. return true;
  34. elseif(($str{$i}&"\xC0")=="\x80")
  35. continue;
  36. }
  37. }
  38. }
  39. return false;
  40. }
  41. return true;
  42. }
复制代码



然后修改“member\index.php”中的代码:将
  1. $tmpstr = @gb2utf8($uid);
  2. $tmpstr2 = @utf82gb($tmpstr);
  3. if($tmpstr2==$uid) $uid = $tmpstr;
复制代码


修改为
  1. if(!isUTF8($uid)) $uid = @gb2utf8($uid);
复制代码



问题解决。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接
 
 
工作时间:
8:00-18:00
客服热线:
15368564009
客服微信