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)){
即,更改其正則表達式使之支持郵箱登錄。
祝你好運~~