0

I am using codeigniter to build a website. There is a "forgot password" link on the login page.When the user clicks on it ,he is asked to enter his email and then will further proceed.I want to set a rule on the email entered by user to check whether it exists in the database or not.In case the email does not exist in the database an error message should be displayed that the email does not exist and redirect the user to the same page. I am new to codeigniter.Please help me.Thanks in advance.This is what I have tried with no success.

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

1 Answer 1

1

Here is the code that you need to use.. Use the Callback method, Form Validation:

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

Model:

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

Hope it helps.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.