2016-04-23 93 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中输入的。

如果您需要数据在重定向中保留,请使用会话用户数据。