2016-04-23 71 views
0

Codeigniter表單驗證很好,但它很麻煩,因爲它重定向到另一個url來驗證表單。因爲有時我們在網址中有段。重定向會丟失細分。在其他情況下,用戶直接輸入驗證URL。在我的例子mywebsite.com/class/login_validation的例子。 那麼如何驗證沒有重定向或阻止用戶直接鍵入驗證URL。codeigniter:無重定向的驗證表格

我的觀點

<?php 
     echo validation_errors(); 
     echo form_open('login_validation'); 
     echo form_label('Username'); 
     echo form_input('username',$this->input->post('username')); 
     echo form_label('Passowrd'); 
     echo form_password('password',$this->input->post('password')); 
     echo form_submit('submit','Login'); 
     echo form_close(); 
     ?> 

我控制器

function login() { 
     $this->load->helper('form'); 
     $this->load->view('page/login'); 
    } 

    function login_validation() { 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('username', 'User Name', 'required|xss_clean|callback_check_user'); 
     $this->form_validation->set_rules('password', 'Password', 'required|xss_clean'); 
     if ($this->form_validation->run()) { 
      $newdata = array('username' => $this->input->post('usertname'), 
       'logged_in' => TRUE 
      ); 
      $this->session->set_userdata($newdata); 
      redirect('dashboard'); 
     } else { 

      $this->load->view('page/login'); 
     } 
    } 
+0

您需要使用ajax,看起來像是一個可能的重複http://stackoverflow.com/questions/17699201/php-codeigniter-ajax-form-validation – wakqasahmed

回答

0
$newdata = array('username' => $this->input->post('usertname') 

請重新檢查該行username代替usertname

0

最簡單的方法來防止URL的直接入口是測試$this->input->method(); =='post'的返回如果true,那麼它不是在URL中輸入的。

如果您需要數據在重定向中保留,請使用會話用戶數據。