我想在我的注册表单中限制用户无法注册已存在的电子邮件和密码..
在我的控制器中: 我已经制定了规则或回调
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;
}
}
答案 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)。
希望这有帮助。