之前在网上搜索的不起作用,看代码没问提啊
原来是那方法有一定的局限性,
就是“用户登录”页面必须“启用验证码”
其实很简单,就是把那段代码换了个位置就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代码,实现注册时验证手机的唯一性,
如果再能用短信形式验证手机的真实性,就更完美了,这只是后话,期待更完善。
来源:https://www.cnblogs.com/boboturbo/p/3635514.html