DiscuzX3.2开发手机登录流程 禁止转载
DZ起点网原创未经许可,严禁转载!第一步:修改登录模板找到登陆的模板文件,默认文件为:
/template/default/member/login.htm 登录模板引用Discuz模板目录结构对照表:
http://www.dz7.com.cn/dz7top-dztemplate.html
找到如下代码:
<option value="email">{lang email}</option>
在后面加上一句:
<option value="mobile">手机</option>
修改后保存:
第二步:修改登录流程
打开source\function\function_member.php
搜索代码:
userlogin($username, $password, $questionid,找到:
if($loginfield == 'uid' && getglobal('setting/uidlogin')) {
$isuid = 1;
} elseif($loginfield == 'email') {
$isuid = 2;
} elseif($loginfield == 'auto') {
$isuid = 3;
} else {
$isuid = 0;
}
修改为:
if($loginfield == 'uid' && getglobal('setting/uidlogin')) {
$isuid = 1;
} elseif($loginfield == 'email') {
$isuid = 2;
} elseif($loginfield == 'auto') {
$isuid = 3;
} elseif($loginfield == 'mobile') {
$isuid = 4;
} else {
$isuid = 0;
}
修改后保存!
第三步:修改UC流程
打开uc_client\control\user.php
搜索:
$user = $_ENV['user']->get_user_by_uid($username);找到:
if($isuid == 1) {
$user = $_ENV['user']->get_user_by_uid($username);
} elseif($isuid == 2) {
$user = $_ENV['user']->get_user_by_email($username);
} else {
$user = $_ENV['user']->get_user_by_username($username);
}修改为:
if($isuid == 1) {
$user = $_ENV['user']->get_user_by_uid($username);
} elseif($isuid == 2) {
$user = $_ENV['user']->get_user_by_email($username);
} elseif($isuid == 4) {
$user = $_ENV['user']->get_user_by_mobile($username);
} else {
$user = $_ENV['user']->get_user_by_username($username);
}保存
第四步:添加登陆模型
打开uc_client\model\user.php
搜索:
function get_user_by_uid($uid)找到function get_user_by_uid($uid) {
$arr = $this->db->fetch_first("SELECT * FROM ".UC_DBTABLEPRE."members WHERE uid='$uid'");
return $arr;
}
在他的上面或者下面添加如下代码
function get_user_by_mobile($mobile) {
$arr = $this->db->fetch_first("SELECT * FROM ".UC_DBTABLEPRE."members WHERE mobile='$mobile'");
return $arr;
}
然后保存!
第五步:修改MySql数据表
....
.....
.......未完待续!
DZ起点网原创未经许可,严禁转载!
登陆的时候是用到了UC表中的mobile字段,但是这个字段uc_members并没有,所有我们要在这个里面加一个mobile字段如下:
额这里用varchar 255是因为官方的common_member_profile表中也是用的varchar 255 严格意义上来说是不能这样的,这里就将就下!这个里面就放登陆的手机号码。其实任意字符都可以... ....黑线.... .....
那么在注册的时候就要用到这个手机号码,所以注册流程也要改一下
打开文件:source/class/class_member.php
搜索:
on_register
找到:
$_GET['username'] = $_GET[''.$this->setting['reginput']['username']];
$_GET['password'] = $_GET[''.$this->setting['reginput']['password']];
$_GET['password2'] = $_GET[''.$this->setting['reginput']['password2']];
$_GET['email'] = $_GET[''.$this->setting['reginput']['email']]; 添加一个:
$mobile=$_GET['mobile'];
$_GET['mobile']需要在注册页面上面创建一个表单,表单的name="mobile" 这个就不用多说了把!
然后在注册方法中加上mobile参数
然后在这个文件中接着搜索:
uc_user_register找到:
$uid = uc_user_register(addslashes($username), $password, $email, $questionid, $answer, $_G['clientip']);改为:
$uid = uc_user_register(addslashes($username), $password, $email, $questionid, $answer, $_G['clientip'],$mobile);
然后打开文件:uc_client/client.php
搜索:
uc_user_register
找到:
function uc_user_register($username, $password, $email, $questionid = '', $answer = '', $regip = '') {
return call_user_func(UC_API_FUNC, 'user', 'register', array('username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer, 'regip' => $regip));
}
改为:
function uc_user_register($username, $password, $email, $questionid = '', $answer = '', $regip = '',$mobile='') {
return call_user_func(UC_API_FUNC, 'user', 'register', array('username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer, 'regip' => $regip ,'mobile'=>$mobile));
}
然后打开文件:uc_client/control/user.php
搜索:
onregister修改:
function onregister() {
$this->init_input();
$username = $this->input('username');
$password =$this->input('password');
$email = $this->input('email');
$questionid = $this->input('questionid');
$answer = $this->input('answer');
$regip = $this->input('regip');
if(($status = $this->_check_username($username)) < 0) {
return $status;
}
if(($status = $this->_check_email($email)) < 0) {
return $status;
}
$uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip);
return $uid;
}为
function onregister() {
$this->init_input();
$username = $this->input('username');
$password =$this->input('password');
$email = $this->input('email');
$questionid = $this->input('questionid');
$answer = $this->input('answer');
$regip = $this->input('regip');
$mobile = $this->input('mobile');
if(($status = $this->_check_username($username)) < 0) {
return $status;
}
if(($status = $this->_check_email($email)) < 0) {
return $status;
}
$uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip,$mobile);
return $uid;
}其实就是加了($mobile = $this->input('mobile');)和改了个($uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $regip,$mobile);)
然后打开文件:uc_client/model/user.php
搜索:
add_user找到:
function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '') {
$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='',";
$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;
}改为:
function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '', $mobile = '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='',";
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='$regip', regdate='".$this->base->time."', salt='$salt', mobile='$mobile'");
$uid = $this->db->insert_id();
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
return $uid;
}
然后保存
注册流程完成!
到此整个手机号码登陆及注册的流程就完成了!
本文由DZ起点网原创,未经许可严禁转载!如有疑问请在本贴下方提问!
請問...第五步驟的數據表示修改哪個?求詳細... 不错,让人眼前一亮,也是作者的心血,先留印迹,备看。 carry0987 发表于 2016-8-11 16:04
請問...第五步驟的數據表示修改哪個?求詳細...
uc_members
页:
[1]