如何在codeigniter中提交表单后重定向到上一页

时间:2014-10-03 06:22:15

标签: forms codeigniter http-redirect

我在控制器中有一个测试功能,可以生成一个表单页面。

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

3 个答案:

答案 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文档