Та же проверка Jquery применяется для регистрации и обновления, но получает проблему удаленного метода для электронной почты - PullRequest
0 голосов
/ 28 июня 2018

Я использую проверку CodeIgniter и jQuery. У меня есть форма регистрации в этих полях Firstname, Lastname, email, mobile. Проверка Jquery работает отлично. Я использую удаленный метод, чтобы проверить, существует ли идентификатор электронной почты в базе данных, которая также работает При регистрации не возникает проблем в форме.

Заходите на обновление записей

Я использую одну и ту же проверку jquery для форм "Регистрация" и "Обновление". Даже проверка правильности также работает, но есть некоторая проблема в удаленном методе.

Я не обновил свой адрес электронной почты, а затем нажмите кнопку отправки, на которой отображается сообщение «Идентификатор электронной почты уже существует». Что касается процесса, это правильно, но есть ли другой способ, без обновления электронной почты удаленный метод не должен вызывать? или если пользователь обновляет поле электронной почты, тогда удаленный метод вызывает обновление? или я должен проверить электронную почту перед обновлением записи? или я должен использовать отдельную проверку для обновления?

Каков наилучший способ использования? Любая другая идея?

Проверка Jquery

$("#emp_register").validate({
        // Specify the validation rules
        rules: {
           firstname:{
                 required: true,
                 minlength:3,
                maxlength:50
           },
          lastname:{
                 required: true,
                 minlength:3,
                maxlength:50
           },
            email: {
                required: true,
                 email:true,
                 remote: {
                    url: baseUrl + "/Employee_control/checkemail_exist",
                    type: "post",
                    data: {
                          email: function () {
                               return $("#email").val();
                        }}
                 }
            },
          mobileno: {
                required: true,
                number:true,
                minlength:10,
                maxlength: 10

            }
   },
      messages: {
        email: {remote: "This email is already registered!"
      }
    },
         submitHandler: function(form) {
         form.submit();
         }
    });

Регистрация

public function employee_register(){
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

        $this->form_validation->set_rules('firstname', 'Firstname', 'trim|required|min_length[3]|max_length[25]');
        $this->form_validation->set_rules('lastname', 'Lastname', 'trim|required|min_length[3]|max_length[25]');
        $this->form_validation->set_rules('email', 'Email', 'required');
        $this->form_validation->set_rules('mobileno', 'Mobile no', 'trim|required|regex_match[/^[0-9]{10}$/]');
        if ($this->form_validation->run() == FALSE)
                {
                      $this->index();
                 }
                 else
                {
        $data = array(
                'firstname'=>$this->input->post('firstname');,
                'lastname'=>$this->input->post('lastname'),
                'email_id'=>$this->input->post('email'),
                'mobileno'=>$this->input->post('mobileno'),
                 );
              $secure_data = $this->security->xss_clean($data);
               $this->db->insert('tbl_employee',$secure_data);  
               redirect("Employee_control/index");   
          }

    }

Обновление

public function update_employee_info(){
    $update_key_id=$this->encryption->decrypt(base64_decode($this->input->get('key')));

    $this->form_validation->set_error_delimiters('<div class="error">', '</div>');

    $this->form_validation->set_rules('firstname', 'Firstname', 'trim|required|min_length[3]|max_length[25]');
    $this->form_validation->set_rules('lastname', 'Lastname', 'trim|required|min_length[3]|max_length[25]');
   $this->form_validation->set_rules('email', 'Email', 'required');
    $this->form_validation->set_rules('mobileno', 'Mobile no', 'trim|required|regex_match[/^[0-9]{10}$/]');
           if ($this->form_validation->run() == FALSE)
                {
                     $this->load->view('employee/employee_edit');
                 }
                 else
                {

    $updateData = array(
                'firstname'=>$this->input->post('firstname'),
                'lastname'=>$this->input->post('lastname'),
                'email_id'=>$this->input->post('email'),
                'mobileno'=>$this->input->post('mobileno')
              );
           $secure_updateData = $this->security->xss_clean($updateData);
            $this->db->where('id', $update_key_id);
            $this->db->update('tbl_employee', $secure_updateData);   
            redirect("Employee_control/employee_list"); 
                }
}

1 Ответ

0 голосов
/ 28 июня 2018

Я предполагаю, что в форме регистрации есть <input> (возможно, скрытый) с именем "ключ", как в форме обновления. В регистрационной форме значение, вероятно, пустое или пустая строка.

Если это так, одним из решений может быть передача значений email и key при проверке почты в JQuery.

Например, это может сработать:

data:{
    key: function () {
    return $("#key").val();
    },
    email: function () {
    return $("#email").val();
    }
},

Метод checkemail_exist() может использовать key, чтобы определить, является ли это ситуацией обновления или вставки. Я создал модель и несколько методов modle->, так как вы не делитесь ими. Надеемся, что намерение для этого ясно.

public function checkemail_exist()
{
    $key = $this->input->get('key');  
    $email = $this->input->get('email');

    if(!empty($key)) //then this is an update
    {
        // This would be the place to decrypt $key if needed

        // get the email associated with the user
        $existing_email = $this->db->user_model->get_email($key);

        if($email == $existing_email)
        {
            //the email input is unchanged from a previously validated value
            return true;
        }
    }

    //With either a new user or exiting user who has changed their email
    //the new input must be unique
    //For example, this made up model->method returns true if the email isn't on file
    return $this->user_model->check_unique_email($email);
}

Если вы используете плагин проверки jQuery, я думаю, что вы, я понимаю, возвращаемое значение должно быть больше, чем просто логическое значение, подобное приведенному выше. Я оставлю вам эту деталь реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...