codeigniter:没有重定向的验证表单

时间:2016-04-23 08:01:56

标签: codeigniter validation redirect

Codeigniter表单验证很不错,但它很麻烦,因为它重定向到另一个URL来验证表单。因为有时我们在URL中有段。重定向将失去该段。而在其他情况下,用户直接键入验证URL。在我的案例mywebsite.com/class/login_validation中的示例。 因此,如何在没有重定向的情况下进行验证,或者阻止用户直接键入验证URL。

我的观点

  <?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');
        }
    }

2 个答案:

答案 0 :(得分:0)

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

请重新检查此行username而不是usertname

答案 1 :(得分:0)

阻止直接输入网址的最简单方法是测试$this->input->method(); =='发布'的返回值。如果为true,那么它不是输入的网址。

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