QQ登录

只需一步,快速开始

开启辅助访问 切换到宽版
搜索

[使用心得] discuz用户注册时不能带“欣”和“衡”字的bug修改

[复制链接]
发表于 2017-11-14 21:05:32 |阅读模式
在dz /uc_client/model/user.php和/uc_server/model/user.php文件中:
  1. function check_username($username) {
  2.                 $guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
  3.                 if(preg_match("/\s+|^c:\\con\\con|[%,\*"\s\<\>\&]|$guestexp/is", $username)) {
  4.                         return FALSE;
  5.                 } else {
  6.                         return TRUE;
  7.                 }
  8.         }
复制代码

$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8'; 会匹配带有"欣"或"衡" 的用户名,因为在utf-8 中 , "欣"编码为:\xE6\xAC\xA3, "衡"编码为:\xE8\xA1\xA1。

上面这一行代码改为:
  1. $guestexp = '(?<!\xE8)\xA1\xA1|(?<!\xE6)\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
复制代码


这样既可以匹配带有 \xA1\xA1|\xAC\xA3 编码的utf-8 特殊字符,又不会匹配 "欣"和"衡"字。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即註冊

本版积分规则

QQ|网站地图|小黑屋|Archiver|東里論壇 ( 粤ICP备14015598号 ) 公安备案图标粤公网安备 44512202000019号
GMT+8, 2024-3-29 17:34 , Processed in 0.083352 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.