建站代码网

热门标签

phpcms v9手动选择用户名或邮箱Email登陆的方法

本来是想要实现phpcms v9登录的时候自动可以选择是用户名还是邮箱的,但是实力有限,只能弄了个笨拙的方法,手动选择一下,效果如下:
phpcms v9手动选择用户名或邮箱Email登陆的方法

phpcms v9手动选择用户名或邮箱Email登陆的方法


另外此方法还可以实现只让用户使用邮箱登录,方法很简单,只需要在第二步的时候把用户名那行代码去掉,然后再把下拉框隐藏掉不让其在前台显示即可。
下面就是我实现phpcms v9手动选择用户名或邮箱Email登陆的方法
1、打开 /statics/js/formvalidatorregex.js 文件
找到
ps_username:"^[\u4E00-\u9FA5\uF900-\uFA2D_\w]+$", //中文、字母、数字 _
修改为
ps_username:"^[\u4E00-\u9FA5\uF900-\uFA2D_\w@.]+$", //中文、字母、数字 _
2、打开 /phpcms/templates/default/member/login.html 文件
在用户名的input前面添加如下代码,判断传送出去的是用户名还是email
<select name="logintypes" id="logintypes" >
  <option value="0">邮箱</option>
  <option value="1">用户名</option>
</select>

3、打开 /phpcms/modules/member/index.php 文件
找到
$username = isset($_POST['username']) && is_username($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER);
修改为
if ($_POST['logintypes']==0){
$username = isset($_POST['username']) && is_email($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER);
}
if ($_POST['logintypes']==1){
$username = isset($_POST['username']) && is_username($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER);
}

找到
$status = $this->client->ps_member_login($username, $password);
修改为
if ($_POST['logintypes']==0){
$status = $this->client->ps_member_login($username, $password,1);
}
if ($_POST['logintypes']==1){
$status = $this->client->ps_member_login($username, $password);
}
X