我在控制器中有一个测试功能,可以生成一个表单页面。
public function testing()
{
$this->form_validation->set_rules('test', 'TEST', 'required');
if ($this->form_validation->run()) {
redirect($this->agent->referrer());
} else {
$data['title'] = 'Testing';
$data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->load->view('templates/header', $data);
$this->load->view('pages/nonmember/testing', $data);
$this->load->view('templates/footer');
}
}
测试视图的代码如下
<div id="message"><?php echo $message; ?></div>
<?php echo form_open(base_url()."testing");?>
<p>
<?php echo form_input('test');?>
</p>
<p><?php echo form_submit('submit', 'Submit');?></p>
<?php echo form_close();?>
如果用户来自其他网页,请在正确提交表单后向我想要的测试页面说About page
,然后将其重定向回About page
。但由于引用代理停留在testing page
,因此无法实现,因此在提交后它将保留在那里而不会重定向到About page
。
答案 0 :(得分:1)
您只需要:
redirect($_SERVER['HTTP_REFERER']);
答案 1 :(得分:0)
在控制器的测试功能中添加此行
$this->session->set_flashdata('url',$this->agent->referrer());
在测试
功能中更改此设置 if ($this->form_validation->run()) {
redirect($this->session->flashdata('url'));
} else {
$this->session->set_flashdata('url',$this->agent->referrer());
//load the view
}
...
或者您也可以提交隐藏字段,例如
form_hidden('rURL', $this->agent->referrer());
然后只需在控制器中使用它的值。
if ($this->form_validation->run()) {
redirect($this->input->post('rURL'));
} else {
...
答案 2 :(得分:-1)
不确定它是否是最佳解决方案,但我发现该解决方案运行良好。
我们需要在文件中写入引用者地址,并重定向我们需要从该文件中读取。 首先我们需要加载文件助手。
$this->load->helper('file');
if ($this->form_validation->run())
{
redirect(read_file('referrer.php'));
}
else
{
$referrer = $this->agent->referrer();
//need to check wrong input submission and page refresh
if ($referrer != "http://localhost/CIpractice2/testing" && !empty($referrer))
{
write_file('referrer.php', $referrer);
}
//show the form
}
请参阅codeIgniter的file helper文档