bao7626452 发表于 2015-6-19 15:30:57

怎样验证同一条数据里的用户和密码,或者邮箱和密码

我是想做用户名或邮箱都可登录的功能,但是问题是密码查询验证时出现问题了,一张表可能会有相同密码,这样就出现一对多的现象,怎样让它在输入用户名或邮箱的这条数据里查询密码。
大概意思是:用户名和密码 或者 邮箱和密码 这样的查询,一一 对应的关系;

控制器代码:
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();
}

如何实现一个用户名或者邮箱对应一个密码,大神们帮忙看下,



bao7626452 发表于 2015-6-19 16:53:48

我已解决这个问题,现将方法说出来:
我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]
查看完整版本: 怎样验证同一条数据里的用户和密码,或者邮箱和密码