我在控制器中有一個測試函數,用於生成表單頁面。如何在codeigniter中提交表單後重定向到上一頁
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
。
首先,它是'set_flashdata()'。其次,這兩種解決方案都可以工作,但如果用戶在登陸後刷新測試頁面,或者用戶輸入不符合驗證規則,那麼頁面將被刷新,意味着引用者變成了自己,因此測試頁面重定向回自己 – user1906399 2014-10-03 08:26:41
而不是使用代理類, $ _ SERVER。它也可以工作 – gahse 2014-10-03 10:04:18
如果用戶輸入錯誤的數據或在從另一個頁面來回之後刷新測試頁面,則什麼都不會起作用。隨着頁面刷新引用正在從其他頁面的網址更改爲測試頁面的網址。 – user1906399 2014-10-03 10:42:17