怎样验证同一条数据里的用户和密码,或者邮箱和密码
我是想做用户名或邮箱都可登录的功能,但是问题是密码查询验证时出现问题了,一张表可能会有相同密码,这样就出现一对多的现象,怎样让它在输入用户名或邮箱的这条数据里查询密码。大概意思是:用户名和密码 或者 邮箱和密码 这样的查询,一一 对应的关系;
控制器代码:
public function login()
{ //获取视图输入的内容,用于和数据库对比
if ($_POST) {
extract($_POST);
if ( $unames
&& $password
&&$this->user_model->is_pass($password)
//数据库里可能有相同密码,变成一个用户名对应多个密码了
&& $this->user_model->is_front($unames)
) {
redirect('front/welcome/index');
}
}
model里的代码:
public function is_pass($password)
{//验证登录时输入密码是否一致
return $this->db->where(array('allow_login' => 1, 'password' => md5(md5($password))))->get($this->table,1)->row_array();
}
public function is_front($unames)
{ ///验证登录时输入的用户名或者邮箱是否一致,把它们放到一个参数 $unames里了
return $this->db->or_where(array('email'=> $unames,'uname'=> $unames))->get($this->table)->row_array();
}
如何实现一个用户名或者邮箱对应一个密码,大神们帮忙看下,
我已解决这个问题,现将方法说出来:
我model里不用or_where了,用了2个where,把密码查询放进去,代码如下:
public function is_front($unames,$password)
{ ///查询输入的邮箱和密码是否正确
return $this->db->where(array('email'=> $unames,'password' => md5(md5($password))))->get($this->table)->row_array();
}
public function is_name($unames,$password)
{ ///查询输入的用户名和密码是否正确
return $this->db->where(array('uname'=> $unames,'password' => md5(md5($password))))->get($this->table)->row_array();
}
控制器里多加了个 elseif条件语句:
if ($_POST) {
extract($_POST);
if ( $unames
&& $password
&& $this->user_model->is_front($unames,$password)
) {
redirect('front/welcome/index');
} elseif($unames
&& $password
&& $this->user_model->is_name($unames,$password)
){
redirect('front/welcome/index');
}
}
页:
[1]