限制在我的注册表单中不允许数据库中使用相同的电子邮件和密码

时间:2015-08-21 12:47:13

标签: codeigniter

我想在我的注册表单中限制用户无法注册已存在的电子邮件和密码..

在我的控制器中: 我已经制定了规则或回调

  array(
     'field'   => 'txt_email', 
     'label'   => 'Email', 
     'rules'   => 'required|valid_email|callback_check_if_valid_email|trim',
                 ),

check_if_valid:

public function check_if_valid_email()
{
            $where  = array('email'      =>$this->input->post('txt_email'),'password'   =>$this->input->post('txt_password'));

            $this->load->model('database_model');            
            if ($user = $this->database_model->validate_user('user', $where))
            {
               foreach ($user as $row) {
                    $checkemail = $row->email;
                    $checkpassword = $row->password;
                } 

                if ($checkemail == $this->input->post('txt_email')){
                    $this->form_validation->set_message('check_if_valid_email', 'Email already existed!');
                    return false;
                }
                else
                {   
                    if ($checkpassword = $this->input->post('txt_password'))
                    {
                        $this->form_validation->set_message('check_if_valid_email', 'Email already exists!');
                        return false;
                    }
                   else
                    {
                        return true;
                    }

                }
            }
 }

在我的模型中:

public function validate_user($table, $where) 
{
  $this->db->where($where);
  $query = $this->db->get($table);
  if ($query->num_rows() > 0)
  {
      return $query->result();
  }
  else 
  {
      return false;
  }
}

1 个答案:

答案 0 :(得分:1)

CodeIgniter的表单验证库附带您正在寻找的规则,名为:is_unique

http://www.codeigniter.com/userguide3/libraries/form_validation.html#rule-reference

您的验证规则将如下所示;

required|valid_email|is_unique[users.email]|trim

您只需将其设置为您想要唯一的表和列(users.email)。

希望这有帮助。