ECMall使用邮箱登录功能

刚刚写的一个小功能,发上来大家共享,支持开源!
首先呢我们要先找到登录验证在什么地方。
\app\frontend.base.php 在这个文件中115行的位置增加下边的代码
//增加用户使用电子邮件登录功能 2010-5-20 14:10:41 Dearlv.
if(is_email($user_name))
{
$mod_user =&m('member');
$user_name_arr=$mod_user->get(array(
'fields'        => 'user_name',
'conditions'    => "email='".$user_name."'", 
));
}
$user_name=trim($user_name_arr['user_name']);
这样就可以实现一个简单的邮箱登录了。支持开源,请保留版权!~
PS:大家要实现邮箱地址登录功能,别忘了在后台开启检查邮箱唯一!~也就是一个邮箱只能注册一个账户!~
看了下回复,说不明? 我来解释下这段程序
if(is_email($user_name)) //这一步是调用原来有的方法检查用户输入的是否是电子邮箱
{
$mod_user =&m('member');//这个是实例化一个模型,在这个模型里边存储了用户的相关信息
$user_name_arr=$mod_user->get(array(
'fields'        => 'user_name',
'conditions'    => "email='".$user_name."'", 
));//这个是以get方法以查询表中email字段为条件查询username 然后放到一个数组里边
}
$user_name=trim($user_name_arr['user_name']);//这一步是将数组中的username重新赋值给username。
这个我试验了是可行的。

或许你们的程序是经过二次开发的,所以我把放在什么地方明确一下
在上边我说的文件里边有
$user_name = trim($_POST['user_name']);
$password  = $_POST['password'];
上边两句!~这个是获取用户输入的用户名和密码,在下边接着放上我写的代码就可以了
在源程序来说获取结束就是
$ms =& ms();
$user_id = $ms->user->auth($user_name, $password);
这段代码。或许有所不一样,但是放到获取用户输入的用户名密码下边是没有错误的。因为的代码原理是根据用户输入的数据判断是否是电子邮箱,如果是才走的写的代码!~然后在后边会根据邮箱获取的用户名重新赋值给user_name 然后就是按原程序走!~
更正一下代码的逻辑错误
if(is_email($user_name)) //这一步是调用原来有的方法检查用户输入的是否是电子邮箱
{
$mod_user =&m('member');//这个是实例化一个模型,在这个模型里边存储了用户的相关信息
$user_name_arr=$mod_user->get(array(
'fields'        => 'user_name',
'conditions'    => "email='".$user_name."'", 
));//这个是以get方法以查询表中email字段为条件查询username 然后放到一个数组里边
$user_name=trim($user_name_arr['user_name']);//这一步是将数组中的username
}
将重新赋值放到IF里边才对!~

你可能感兴趣的:(ECMall使用邮箱登录功能)