大家使用帝国cms开发时经常会遇到需要整合discuz论坛的状况,有时会需要增加注册用户名的长度,来实现更个性化的设置,例如8个中文汉字,帝国cms后台可以轻松设置,对于discuz就无能为力了。下面cms大学小编记录一下修改各处的方法,供大家参考。
一、首先是/e/client/model/user.php文件,此处问整合的api文件,查找check_username($username)函数,将内容修改为如下:
- function check_username($username) {
- //$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';
- //$len = strlen($username);
- //if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
- // return FALSE;
- //} else {
- return TRUE;
- //}
- }
二、接下来是论坛部分的修改
添加用户函数,修改source\class\class_member.php,定位578行,把
- } elseif($usernamelen > 15) {
修改为(不一定要改为32,你需要多少位都可以,下同):
- } elseif($usernamelen > 32) {
AJAX验证,修改source\module\forum\forum_ajax.php,定位22行,把
- } elseif($usernamelen > 15) {
修改为:
- } elseif($usernamelen > 32) {
前端js验证,修改static\js\register.js,定位281、282行,把
- if(unlen < 3 || unlen > 15) {
- errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
修改为:
- if(unlen < 3 || unlen > 32) {
- errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 32 个字符');
Ucenter中的用户名过滤,修改uc_client\model\user.php 和 uc_server\model\user.php,同样定位到44行,把
- if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
修改为:
- if($len > 32 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {
接着修改模板注册页面表单的长度的限制,修改template\default\member\register.htm,定位到125行,把
- <td><input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" tabindex="1" autocomplete="off" size="25" maxlength="15" required /></td>
修改为:
- 'profile_username_toolong' => '抱歉,您的用户名超过 32 个字符,请输入一个较短的用户名',
接着修改语言包,修改source\language\member\lang_template.php,定位到52行,把
- 'register_username_tips' => '用户名由 3 到 15 个字符组成',
修改为
- 'register_username_tips' => '用户名由 3 到 32 个字符组成',
最后是修改数据库的用户名长度限制,因为字段属性为 char(15),varchar(15),char(20)等等,我们统一修改它为 varchar(32),当然改成100也是可以的,复制和运行以下SQL语句即可:
- ALTER TABLE `pre_common_adminnote` modify column `admin` varchar(32);
- ALTER TABLE `pre_common_banned` modify column `admin` varchar(32);
- ALTER TABLE `pre_common_diy_data` modify column `username` varchar(32);
- ALTER TABLE `pre_common_grouppm` modify column `author` varchar(32);
- ALTER TABLE `pre_common_member` modify column `username` varchar(32);
- ALTER TABLE `pre_common_member_crime` modify column `operator` varchar(32);
- ALTER TABLE `pre_common_member_validate` modify column `admin` varchar(32);
- ALTER TABLE `pre_common_mytask` modify column `username` varchar(32);
- ALTER TABLE `pre_common_report` modify column `username` varchar(32),modify column `opname` varchar(32);
- ALTER TABLE `pre_common_session` modify column `username` varchar(32);
- ALTER TABLE `pre_common_word` modify column `admin` varchar(32);
- ALTER TABLE `pre_common_card_log` modify column `username` varchar(32);
- ALTER TABLE `pre_common_failedlogin` modify column `username` varchar(32);
- ALTER TABLE `pre_common_invite` modify column `fusername` varchar(32);
- ALTER TABLE `pre_common_member_verify_info` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_announcement` modify column `author` varchar(32);
- ALTER TABLE `pre_forum_collection` modify column `username` varchar(32),modify column `lastposter` varchar(32);
- ALTER TABLE `pre_forum_collectioncomment` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_collectionfollow` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_collectionteamworker` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_creditslog` modify column `fromto` varchar(32);
- ALTER TABLE `pre_forum_forumrecommend` modify column `author` varchar(32);
- ALTER TABLE `pre_forum_groupuser` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_order` modify column `admin` varchar(32);
- ALTER TABLE `pre_forum_pollvoter` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_post` modify column `author` varchar(32);
- ALTER TABLE `pre_forum_postcomment` modify column `author` varchar(32);
- ALTER TABLE `pre_forum_promotion` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_ratelog` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_rsscache` modify column `author` varchar(32);
- ALTER TABLE `pre_forum_thread` modify column `author` varchar(32),modify column `lastposter` varchar(32);
- ALTER TABLE `pre_forum_threadmod` modify column `username` varchar(32);
- ALTER TABLE `pre_forum_trade` modify column `seller` varchar(32),modify column `lastbuyer` varchar(32);
- ALTER TABLE `pre_forum_tradecomment` modify column `rater` varchar(32),modify column `ratee` varchar(32);
- ALTER TABLE `pre_forum_tradelog` modify column `seller` varchar(32),modify column `buyer` varchar(32);
- ALTER TABLE `pre_forum_warning` modify column `operator` varchar(32),modify column `author` varchar(32);
- ALTER TABLE `pre_home_album` modify column `username` varchar(32);
- ALTER TABLE `pre_home_blog` modify column `username` varchar(32);
- ALTER TABLE `pre_home_clickuser` modify column `username` varchar(32);
- ALTER TABLE `pre_home_comment` modify column `author` varchar(32);
- ALTER TABLE `pre_home_docomment` modify column `username` varchar(32);
- ALTER TABLE `pre_home_doing` modify column `username` varchar(32);
- ALTER TABLE `pre_home_feed` modify column `username` varchar(32);
- ALTER TABLE `pre_home_feed_app` modify column `username` varchar(32);
- ALTER TABLE `pre_home_follow` modify column `username` varchar(32),modify column `fusername` varchar(32);
- ALTER TABLE `pre_home_follow_feed` modify column `username` varchar(32);
- ALTER TABLE `pre_home_follow_feed_archiver` modify column `username` varchar(32);
- ALTER TABLE `pre_home_friend` modify column `fusername` varchar(32);
- ALTER TABLE `pre_home_friend_request` modify column `fusername` varchar(32);
- ALTER TABLE `pre_home_notification` modify column `author` varchar(32);
- ALTER TABLE `pre_home_pic` modify column `username` varchar(32);
- ALTER TABLE `pre_home_poke` modify column `fromusername` varchar(32);
- ALTER TABLE `pre_home_share` modify column `username` varchar(32);
- ALTER TABLE `pre_home_show` modify column `username` varchar(32);
- ALTER TABLE `pre_home_specialuser` modify column `username` varchar(32),modify column `opusername` varchar(32);
- ALTER TABLE `pre_home_visitor` modify column `vusername` varchar(32);
- ALTER TABLE `pre_portal_rsscache` modify column `author` varchar(32);
- ALTER TABLE `pre_portal_topic_pic` modify column `username` varchar(32);
- ALTER TABLE `pre_ucenter_admins` modify column `username` varchar(32);
- ALTER TABLE `pre_ucenter_badwords` modify column `admin` varchar(32);
- ALTER TABLE `pre_ucenter_feeds` modify column `username` varchar(32);
- ALTER TABLE `pre_ucenter_members` modify column `username` varchar(32);
- ALTER TABLE `pre_ucenter_mergemembers` modify column `username` varchar(32);
- ALTER TABLE `pre_ucenter_protectedmembers` modify column `username` varchar(32),modify column `admin` varchar(32);
注:如果其他论坛插件有设计用户名的字段,也需要相应修改字符数限制。
至此全部修改完成。