代码编写器,防止浏览器在表单提交后返回按钮


Codeigniter, preventing browser's back button after form submit

我有一个控制器在Codeigniter如下:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Charity extends MY_Controller {
    public function index()
    {
        if($this->input->method() === 'post'){
            $data['name'] =  $this->input->post('name');
            $this->load->view('review_page', $data); 
        }else{
            $this->load->view('charity');
        }
    }
}

视图是:

charity.php 
<form method="post" action="/">
<input name="name" type="text"/>
<input value="send" type="submit"/>
</form>
review_page.php
<h1><?= echo $name; ?></h1>

当我提交表单时,我得到review_page视图加载,但如果我点击浏览器的返回按钮,我回到表单。是否有一个为什么使表单页面过期后,它提交,使后退按钮不显示它?

谢谢

后退按钮不工作,因为你从来没有真正重定向到不同的URL。您需要构建代码以使其重定向。我将构建另一个方法来加载评论页面,像这样

public function index() {
    $this->load->view('charity');
} 
public function reviews(){
  if($this->input->method() === 'post'){
      $data['name'] =  $this->input->post('name');
      $this->load->view('review_page', $data); 
  } else {
      redirect('charity');
  }
}

你的html

<form method="post" action="reviews">

也许这能帮到你:

添加以下代码:

 <?php
   session_start();
   if ( isset($_SESSION['isSubmit']) and $_SESSION['isSubmit'] == 'ok' )
   {
     echo 'page is expired: form already submit !';
     session_destroy();
   }
 ?>

在review_page.php顶部添加以下代码:

 <?php
   session_start();
   $_SESSION['isSubmit'] = 'ok' ;
 ?>