如何在CodeIgniter中实现Post-Redirect-Get模式

时间:2016-05-18 18:08:36

标签: php codeigniter post-redirect-get

我正在提交表单和提交页面。刷新页面时,它会要求重新发送数据。为了避免这种情况,我发现我必须实现PRG模式。任何人都可以帮我在CodeIgniter中实现相同的功能吗?

1 个答案:

答案 0 :(得分:1)

为了将数据从处理功能传递回查看功能,您必须使用会话。该示例假定Codeigniter v3.0.0或更高版本。如果您使用的是某些早期版本,则必须修改会话数据的设置,获取和重置。

这是一个非常简单的控制器

class TestPRG extends CI_Controller
{
  public function __construct()
  {
    parent::__construct();
    $this->load->helper('form');
    $this->load->library('session');
  }

  public function index()
  {
    $data['name'] = $this->session->name;
    $data['pw'] = $this->session->pw;
    $this->load->view('test_form_v', $data);
    unset($_SESSION['name'], $_SESSION['pw']);
  }

  public function process_form()
  {
   $_SESSION['name'] = $this->input->post('username');
   $_SESSION['pw'] = $this->input->post('password');
   redirect('testprg', 'location', 303);
  }

}

视图文件

<?php    
echo form_open('testprg/process_form');
echo form_input('username', isset($name) ? $name : NULL);
echo form_password('password', "");
echo form_submit('Submit', 'Submit');
echo form_close();
echo isset($pw) ? $pw : "";

这将回显最后输入的密码(如果存在)。它不会在页面刷新时存在或从浏览器返回。