广州传奇网络

地址:广州市天河区东圃大马路富华楼C座

电话:13808825895

邮箱:gz020wbs@163.com

QQ:1564443073

网址:http://www.020wbs.com/

首页 > 二次开发Ecshop二次开发 > 让ECSHOP支持用手机号码登录、邮箱登录、Email登录

二次开发Ecshop二次开发

二次开发Ecshop二次开发

让ECSHOP支持用手机号码登录、邮箱登录、Email登录

今天在网上看到一个帖子,讲的是“如何让ECSHOP也支持用邮箱登录、用手机号码登录”,
很多人跟帖说不能用,其实不是不能用,
而是楼主提供的方法有一定的局限性,
就是“用户登录”页面必须“启用验证码”,楼主那个方法才好使。

其实很简单,就是把那段代码换了个位置就OK了。下来有时间,三个太阳会把它做成ECSHOP插件形式共享给大家
以下是具体的方法:

修改 User.php 文件

找到

if ($user->login($username, $password,isset($_POST['remember'])))

在它上边增加一段ECSHOP代码

if(is_email($username))
{
$sql ="select user_name from ".$ecs->table('users')." where email='".$username."'";
$username_e = $db->getOne($sql);
if($username_e) $username=$username_e;
}
if(is_telephone($username))
{
$sql ="select user_name from ".$ecs->table('users')." where mobile_phone='".$username."'";
$username_e = $db->getOne($sql);
if($username_e) $username=$username_e;
}


继续在 user.php 的底部再增加一段代码


function is_telephone($phone){
$chars = "/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$/";
if (preg_match($chars, $phone)){
return true;
}
}

这样修改以后,即使你没启用验证码,也是OK的。感兴趣的朋友可以测试下。

不过这个代码还是有一定的BUG的,
因为ECSHOP注册用户的时候,手机号码没有验证唯一性,
所以数据库中有可能存在不同用户名,同一个手机号的情况。
我们可以进一步修改ECSHOP代码,实现注册时验证手机的唯一性,
如果再能用短信形式验证手机的真实性,就更完美了,这只是后话,期待更完善。