之前在网上搜索的不起作用,看代码没问提啊

原来是那方法有一定的局限性,

就是“用户登录”页面必须“启用验证码”

其实很简单,就是把那段代码换了个位置就OK了。

以下是具体的方法:

修改 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代码,实现注册时验证手机的唯一性,
如果再能用短信形式验证手机的真实性,就更完美了,这只是后话,期待更完善。