UCenter同步HDWiki及其他APP用户长度限制

UCenter同步HDWiki及其他APP用户长度限制

今天在项目中遇到一个问题,当UCenter接入了自己开发的APP的时候,在某些状况下(如用QQ邮箱注册),就会超过其字段长度的限制。怎么解决呢?在此,我将我的解决方案分享给大家,大家共同交流,共同学习,少走弯路。
本人所使用的环境版本:
Linux版本:万网CentOS5.4
HDWiki版本:5.1
UCenter版本:1.6.0
PHP版本:5.3x
MySQL版本:5.1

1,更改数据库,让用户名直接支持指定长度的字符串(这里以30为参考):

(1)更改UCenter库中uc_menbers表用户名长度限制;

	ALTER  TABLE  `ucenter`.`uc_menbers` MODIFY COLUMN `username`  CHAR(30) NOT NULL; 

(2)更改HDWiki库中wiki_user表中的用户名长度限制:

	ALTER  TABLE  `hdwiki`.`wiki_user` MODIFY COLUMN `username`  CHAR(30) NOT NULL; 

2,更改PHP源码:
(1)更改UCenter部分源码:
ucenter/model/user.php文件 约第44行
$len > 15
更改为:
$len > 30
(2)更改HDWiki部分源码:
hdwiki/api/uc_client/model/user.php文件约 第39行
$len > 15
更改为:
$len > 30
hdwiki/control/user.php文件约第43行
{$this->setting['name_max_length'] = 15;}
改为:
{$this->setting['name_max_length'] = 32;}

3,HDWiki登录时“用户名包含敏感字符!”解决
hdwiki/control/user.php 文件约311行:
if(!preg_match("/^[\w\s\d_\x80-\xff]+$/i", $username) || (!$_ENV['user']->check_name($username) && $type>0)){
更改为:
if(!preg_match("/^[\w\s\d_\x80-\xff.@]+$/i", $username) || (!$_ENV['user']->check_name($username) && $type>0)){
即,更改其正则表达式使之支持邮箱登录。
祝你好运~~

你可能感兴趣的:(ucenter)