Ucenter添加手机号注册登录
来源:互联网 发布:扎克伯格起诉社交网络 编辑:程序博客网 时间:2024/06/11 20:11
登录比较简单
在pre_common_member(discuz用户表,可能前缀不一样),uc_members(UCenter用户表,可能前缀不一样)两张表增加mobile字段
发现登录调用的是UC的uc_user_login接口方法,此方法在uc_client/client.php文件里,
然后跟踪,在控制器文件夹uc_client/control/user.php里找到onlogin()方法,
继续跟踪在model文件uc_client/model/user.php找到get_user_by_username方法,将
$arr
=
$this
->db->fetch_first(
"SELECT * FROM
"
.UC_DBTABLEPRE.
"members WHERE username='$username' "
);
修改为:
$arr
=
$this
->db->fetch_first(
"SELECT * FROM
"
.UC_DBTABLEPRE.
"members WHERE username='$username' or mobile='$username'"
);
注册
修改uc_client/control/user.php 里找到 _check_email()方法
return UC_USER_EMAIL_FORMAT_ILLEGAL;//
为
if(!$_ENV['user']->check_mobileformat($email)){//不符合手机格式
return UC_USER_EMAIL_FORMAT_ILLEGAL;//邮箱 格式不对
}elseif($_ENV['user']->check_mobileexists($email, $username)){//已存在手机
return -7;
}else{
return 2;
}
修改uc_client/control/user.php 里找到 onregister()方法
$uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip);
为
if($status==2){//使用手机注册
$uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip, 1);
}else{//使用邮箱注册
$uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip);
}
修改uc_client/model/user.php添加两个方法
//自己添加 检查手机格式
function check_mobileformat($email) {
return strlen($email) == 11 && preg_match("/^1[34578]\d{9}$/", $email);
}
//自己添加 检查手机是否已经注册
function check_mobileexists($email, $username = '') {
$sqladd = $username !== '' ? "AND username<>'$username'" : '';
$email = $this->db->result_first("SELECT email FROM ".UC_DBTABLEPRE."members WHERE mobile='$email' $sqladd");
return $email;
}
修改uc_client/model/user.php里的 add_user()方法为(只对标红区域进行更改就可以)
function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '', $ismobile=0) {
$regip = empty($regip) ? $this->base->onlineip : $regip;
$salt = substr(uniqid(rand()), -6);
$password = md5(md5($password).$salt);
$sqladd = $uid ? "uid='".intval($uid)."'," : '';
$sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
if($ismobile==1){//使用手机号注册
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', mobile='$email', regip='$regip', regdate='".$this->base->time."', salt='$salt'");
}else{
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='$regip', regdate='".$this->base->time."', salt='$salt'");
}
$uid = $this->db->insert_id();
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
return $uid;
}
注:
此登录、注册都不是最优解决方案
登录时手机号和用户名共用了同一个变量$username
注册时在前台最好判断一下用户输入的是手机还是邮箱,因为手机和邮箱共用了同一个变量$email
如果用户输入一个10位数字,而前台没用正则判断,后台返回的错误码为-4,显示为
Email 格式有误,影响用户体验
有待优化
- Ucenter添加手机号注册登录
- Magento 使用手机号注册登录
- Magento 使用手机号注册登录
- 整合Ucenter同步注册,登录,退出
- Ucenter的用户注册和登录分析
- Ucenter的用户注册和登录分析
- ucenter api注册Discuz免激活登录
- Thinkphp整合ucenter同步登录注册退出
- 使用手机号登录、注册、重置密码
- Magento使用手机号注册登录开发过程
- 用户手机号注册登录(包括接口)
- php,与ucenter同步用户登录,注册的教程
- 解决整合 UCenter 首次注册同步登录与自动激活
- 解决整合 UCenter 首次注册同步登录与自动激活
- J2EE整合UCenter 首次注册同步登录与自动激活
- 解决整合 UCenter 首次注册同步登录与自动激活
- Discuz使用UCenter实现同步登录、注册、退出
- iOS 登录注册只包含数字/手机号验证
- haproxy帮助文档
- 跑马灯-位带操作
- linux下安装python环境
- JDK源码 Java Reference
- VS2005 SP1补丁下载与安装
- Ucenter添加手机号注册登录
- iOS UISlider, UIProgressView, UIActivityIndicatorView使用方法和监听
- kNN算法__手写识别——基于Python和NumPy函数库
- [gdc16]Rainbow6:siege的渲染和破坏技术
- 关于手势学习的基础
- KNIME 数据分析平台
- mark生物信息学and其相关Python的书
- logistic回归__基于Python和Numpy函数库
- TCP/IP三次握手四次挥手流程解析及TCP/IP四层模型