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');
}
}
答案 0 :(得分:0)
$newdata = array('username' => $this->input->post('usertname')
请重新检查此行username
而不是usertname
答案 1 :(得分:0)
阻止直接输入网址的最简单方法是测试$this->input->method();
=='发布'的返回值。如果为true,那么它不是输入的网址。
如果您需要在重定向中保留数据,请使用会话用户数据。