帝国cms整合discuz论坛,修改ucenter用户名长度限制的方法

大家使用帝国cms开发时经常会遇到需要整合discuz论坛的状况,有时会需要增加注册用户名的长度,来实现更个性化的设置,例如8个中文汉字,帝国cms后台可以轻松设置,对于discuz就无能为力了。下面cms大学小编记录一下修改各处的方法,供大家参考。

一、首先是/e/client/model/user.php文件,此处问整合的api文件,查找check_username($username)函数,将内容修改为如下:

折叠PHP 代码
  1. function check_username($username) {  
  2.                 //$guestexp = '\xA1\xA1|\xAC\xA3|^Guest|^\xD3\xCE\xBF\xCD|\xB9\x43\xAB\xC8';  
  3.                 //$len = strlen($username);  
  4.                 //if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is", $username)) {  
  5.                 //        return FALSE;  
  6.                 //} else {  
  7.                         return TRUE;  
  8.                 //}   
  9. }  

二、接下来是论坛部分的修改

添加用户函数,修改source\class\class_member.php,定位578行,把

折叠PHP 代码
  1. elseif($usernamelen > 15) {  

修改为(不一定要改为32,你需要多少位都可以,下同):

折叠PHP 代码
  1. elseif($usernamelen > 32) {  

AJAX验证,修改source\module\forum\forum_ajax.php,定位22行,把

折叠PHP 代码
  1. elseif($usernamelen > 15) {  

修改为:

折叠PHP 代码
  1. elseif($usernamelen > 32) {    
 

前端js验证,修改static\js\register.js,定位281、282行,把

折叠PHP 代码
  1. if(unlen < 3 || unlen > 15) {  
  2.   
  3.                 errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');  

修改为:

折叠PHP 代码
  1. if(unlen < 3 || unlen > 32) {  
  2.                 errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 32 个字符');  

 

Ucenter中的用户名过滤,修改uc_client\model\user.php uc_server\model\user.php,同样定位到44行,把

折叠PHP 代码
  1. if($len > 15 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is"$username)) {  

修改为:

折叠PHP 代码
  1. if($len > 32 || $len < 3 || preg_match("/\s+|^c:\\con\\con|[%,\*\"\s\<\>\&]|$guestexp/is"$username)) {  

接着修改模板注册页面表单的长度的限制,修改template\default\member\register.htm,定位到125行,把

折叠PHP 代码
  1. <td><input type="text" id="{$this->setting['reginput']['username']}" name="" class="px" tabindex="1" autocomplete="off" size="25" maxlength="15" required /></td>  

修改为:

折叠PHP 代码
  1. 'profile_username_toolong' => '抱歉,您的用户名超过 32 个字符,请输入一个较短的用户名',  

接着修改语言包,修改source\language\member\lang_template.php,定位到52行,把

折叠PHP 代码
  1. 'register_username_tips' => '用户名由 3 到 15 个字符组成',  

修改为

折叠PHP 代码
  1. 'register_username_tips' => '用户名由 3 到 32 个字符组成',  

最后是修改数据库的用户名长度限制,因为字段属性为 char(15),varchar(15),char(20)等等,我们统一修改它为 varchar(32),当然改成100也是可以的,复制和运行以下SQL语句即可:

折叠SQL 代码
  1. ALTER TABLE `pre_common_adminnote` modify column `admin`  varchar(32);  
  2. ALTER TABLE `pre_common_banned` modify column `admin`  varchar(32);  
  3. ALTER TABLE `pre_common_diy_data` modify column `username`  varchar(32);  
  4. ALTER TABLE `pre_common_grouppm` modify column `author`  varchar(32);  
  5. ALTER TABLE `pre_common_member` modify column `username`  varchar(32);  
  6. ALTER TABLE `pre_common_member_crime` modify column `operator`  varchar(32);  
  7. ALTER TABLE `pre_common_member_validate` modify column `admin`  varchar(32);  
  8. ALTER TABLE `pre_common_mytask` modify column `username`  varchar(32);  
  9. ALTER TABLE `pre_common_report` modify column `username`  varchar(32),modify column `opname`  varchar(32);  
  10. ALTER TABLE `pre_common_session` modify column `username`  varchar(32);  
  11. ALTER TABLE `pre_common_word` modify column `admin`  varchar(32);  
  12. ALTER TABLE `pre_common_card_log` modify column `username`  varchar(32);  
  13. ALTER TABLE `pre_common_failedlogin` modify column `username`  varchar(32);  
  14. ALTER TABLE `pre_common_invite` modify column `fusername`  varchar(32);  
  15. ALTER TABLE `pre_common_member_verify_info` modify column `username`  varchar(32);  
  16. ALTER TABLE `pre_forum_announcement` modify column `author`  varchar(32);  
  17. ALTER TABLE `pre_forum_collection` modify column `username`  varchar(32),modify column `lastposter`  varchar(32);  
  18. ALTER TABLE `pre_forum_collectioncomment` modify column `username`  varchar(32);  
  19. ALTER TABLE `pre_forum_collectionfollow` modify column `username`  varchar(32);  
  20. ALTER TABLE `pre_forum_collectionteamworker` modify column `username`  varchar(32);  
  21. ALTER TABLE `pre_forum_creditslog` modify column `fromto`  varchar(32);  
  22. ALTER TABLE `pre_forum_forumrecommend` modify column `author`  varchar(32);  
  23. ALTER TABLE `pre_forum_groupuser` modify column `username`  varchar(32);  
  24. ALTER TABLE `pre_forum_order` modify column `admin`  varchar(32);  
  25. ALTER TABLE `pre_forum_pollvoter` modify column `username`  varchar(32);  
  26. ALTER TABLE `pre_forum_post` modify column `author`  varchar(32);  
  27. ALTER TABLE `pre_forum_postcomment` modify column `author`  varchar(32);  
  28. ALTER TABLE `pre_forum_promotion` modify column `username`  varchar(32);  
  29. ALTER TABLE `pre_forum_ratelog` modify column `username`  varchar(32);  
  30. ALTER TABLE `pre_forum_rsscache` modify column `author`  varchar(32);  
  31. ALTER TABLE `pre_forum_thread` modify column `author`  varchar(32),modify column `lastposter`  varchar(32);  
  32. ALTER TABLE `pre_forum_threadmod` modify column `username`  varchar(32);  
  33. ALTER TABLE `pre_forum_trade` modify column `seller`  varchar(32),modify column `lastbuyer`  varchar(32);  
  34. ALTER TABLE `pre_forum_tradecomment` modify column `rater`  varchar(32),modify column `ratee`  varchar(32);  
  35. ALTER TABLE `pre_forum_tradelog` modify column `seller`  varchar(32),modify column `buyer`  varchar(32);  
  36. ALTER TABLE `pre_forum_warning` modify column `operator`  varchar(32),modify column `author`  varchar(32);  
  37. ALTER TABLE `pre_home_album` modify column `username`  varchar(32);  
  38. ALTER TABLE `pre_home_blog` modify column `username`  varchar(32);  
  39. ALTER TABLE `pre_home_clickuser` modify column `username`  varchar(32);  
  40. ALTER TABLE `pre_home_comment` modify column `author`  varchar(32);  
  41. ALTER TABLE `pre_home_docomment` modify column `username`  varchar(32);  
  42. ALTER TABLE `pre_home_doing` modify column `username`  varchar(32);  
  43. ALTER TABLE `pre_home_feed` modify column `username`  varchar(32);  
  44. ALTER TABLE `pre_home_feed_app` modify column `username`  varchar(32);  
  45. ALTER TABLE `pre_home_follow` modify column `username`  varchar(32),modify column `fusername`  varchar(32);  
  46. ALTER TABLE `pre_home_follow_feed` modify column `username`  varchar(32);  
  47. ALTER TABLE `pre_home_follow_feed_archiver` modify column `username`  varchar(32);  
  48. ALTER TABLE `pre_home_friend` modify column `fusername`  varchar(32);  
  49. ALTER TABLE `pre_home_friend_request` modify column `fusername`  varchar(32);  
  50. ALTER TABLE `pre_home_notification` modify column `author`  varchar(32);  
  51. ALTER TABLE `pre_home_pic` modify column `username`  varchar(32);  
  52. ALTER TABLE `pre_home_poke` modify column `fromusername`  varchar(32);  
  53. ALTER TABLE `pre_home_share` modify column `username`  varchar(32);  
  54. ALTER TABLE `pre_home_show` modify column `username`  varchar(32);  
  55. ALTER TABLE `pre_home_specialuser` modify column `username`  varchar(32),modify column `opusername`  varchar(32);  
  56. ALTER TABLE `pre_home_visitor` modify column `vusername`  varchar(32);  
  57. ALTER TABLE `pre_portal_rsscache` modify column `author`  varchar(32);  
  58. ALTER TABLE `pre_portal_topic_pic` modify column `username`  varchar(32);  
  59. ALTER TABLE `pre_ucenter_admins` modify column `username`  varchar(32);  
  60. ALTER TABLE `pre_ucenter_badwords` modify column `admin`  varchar(32);  
  61. ALTER TABLE `pre_ucenter_feeds` modify column `username`  varchar(32);  
  62. ALTER TABLE `pre_ucenter_members` modify column `username`  varchar(32);  
  63. ALTER TABLE `pre_ucenter_mergemembers` modify column `username`  varchar(32);  
  64. ALTER TABLE `pre_ucenter_protectedmembers` modify column `username`  varchar(32),modify column `admin`  varchar(32);  

注:如果其他论坛插件有设计用户名的字段,也需要相应修改字符数限制。

至此全部修改完成。

Tags: 整合   discuz   ucenter
cms大学,为帝国cms用户提供动力
Copyright © 2016 CmsDX.com All Rights Reserved.