请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
查看1786 | 回复1 | 2019-8-22 14:44 | 显示全部楼层 |阅读模式
解决中文注册的会员空间打不开问题

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

其实说到底还是个字符编码转换问题。
因为汉字没有在判断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);<span style="background-color: rgb(255, 255, 255);"> </span>
复制代码
问题解决,后台更新缓存。

hongjichao | 2019-8-22 19:39 | 显示全部楼层
技术学习教程网,支持一下。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

UID
1
贡献
387
丢币
38902
主题
4607
回帖
116
注册时间
2018-9-25
最后登录
2024-3-24