我已经使用CodeIgniter创建了一个登录表单。为了测试表单,我提交了不正确的数据,我得到了正确的信息,表格被重新显示。如果我更正错误并重新提交,则uri段将附加到URL。
所以我用localhost/myapp
调用应用程序,显示登录表单。提交后,网址将更改为localhost/myapp/controller/authenticate
。再次提交网址更改为localhost/myapp/controller/authenticate/controller/authenticate
这里有什么问题?
查看
<form action="<?php echo base_url();?>/welcome/authenticate" method="post" id="loginfrm">
<input type="text" name="username" /><?php echo form_error('username', '<div class="error">', '</div>'); ?><br />
<input type="password" name="password" /><?php echo form_error('password', '<div class="error">', '</div>'); ?><br />
<input type="submit" value="Login" />
</form>
控制器
public function index()
{
$this->load->view('welcome_message');
}
public function authenticate()
{
$this->form_validation->set_rules('username', 'Username', 'trim|required');
$this->form_validation->set_rules('password', 'Password', 'trim|required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('welcome_message');
}
else
{
echo $this->input->post('username') . " -->> " . $this->input->post('password');
}
}
}
答案 0 :(得分:1)
在处理表单的函数中始终使用重定向,如果一切正常并且在用户尝试刷新页面时加载了视图,则会阻止表单重新提交,他将被要求重新提交表单。重定向功能更改浏览器地址栏中的URL,以便不再要求用户重新提交表单。