在codeigniter中创建自己的表单验证规则

时间:2014-01-07 13:07:49

标签: codeigniter

我正在使用codeigniter建立一个网站。登录页面上有一个“忘记密码”链接。当用户点击它时,他被要求输入他的电子邮件然后将继续进行。我想在用户输入的电子邮件上设置规则以检查它是否存在在数据库中是否存在。如果数据库中不存在该电子邮件,则应显示该电子邮件不存在的错误消息,并将用户重定向到同一页面。我是codeigniter的新手。请帮助我。提前谢谢。这是我尝试过但没有成功。

view 'change password'
<!DOCTYPE html> 
<html>
 <head>
   <title> Login</title>
   <link rel="stylesheet" href="http://localhost/cinema/assets/css/form.css">
 </head>
 <body>
 <form action="http://localhost/cinema/verifyque/sec_que" method="post" accept-charset="utf-8" class="username">
  <br>
   <p>
           <label for="email_id">Email ID</label>
       <input type="text" id="username" name="email_id"/>
     </p>

    <input type="submit" name="btnSubmit" class="styled-button-8" value="Submit"
             />
         <font color="red" size="4"><b>
         <?php echo validation_errors(); ?></b></font>

 </form></body></html>


Controller
  function sec_que(){
         $this->load->library('form_validation');
      $this->form_validation->set_rules('email_id', 'Email',    'callback_email_available');
          function email_available($str)
{
// You can access $_POST variable
$this->load->model('user');
$result =   $this->user->emailAvailability($str);
if ($result)
{
    return TRUE;
}else{
    $this->form_validation->set_message('email_available', 'The %s does not exist');
    return FALSE;
}
}
if($this->form_validation->run() === TRUE) { 
       $this->load->model('user');
        $email['email_id'] = $this->input->post('email_id');
        $this->session->set_userdata($email);
       $data['que_id_1']=  $this->user->display_que();
       $data['que_id_2']=  $this->user->display_que2();
       $this->load->view('forgot_password_2', $data);

   }
 else{
 $this->load->view('change_password');
 }
}

Model
  public function emailAvailability($email)
{
    $this->db->where('user_email',$email);
    $query  =   $this->db->get('users');
   return $query->row();
 }

1 个答案:

答案 0 :(得分:1)

以下是您需要使用的代码.. 使用Callback方法, 表格验证:

$this->form_validation->set_rules('Email', 'Email', 'callback_emailAvailability');

型号:

public function emailAvailability($email)
    {
        $query  = $this->db->get_where('user_email',$email);
              if($query > 0){
                return true;
               }else{
             return false;
              }
     }

希望它有所帮助。