在 php 中取消设置 POST 值


Unset POST values in php

acitvity.php

//Form start
   <form action=''>
   </form>
//Form End
//Get POST Values
<?php 
$_POST[''];
?>
//End

如果我在提交表单后刷新页面,则会重新提交所有已发布的值,原因是所有值都在浏览器中,因此会重新提交。当我为此寻找解决方案时,我得到的信息是,如果表单和发布操作在单独的 php 文件中完成,那么刷新时发布值就不再有问题。

这是解决方案吗?但现在我必须在单个文件中同时执行,并且刷新时不应再次提交POST值..有什么办法可以做到这一点吗???

学习 PRG 模式,以便您可以正确地执行此操作:)

http://en.wikipedia.org/wiki/Post/Redirect/Get

例如,您正在尝试处理用户注册表单,因此您要做的是获取一堆POST ed值,并将其保存到数据库中。

if(!empty($_POST)) {
   // validate and save to db
   // get last inserted user_id
}

执行此操作后,您不会返回具有先前POST ed 值的同一页面,而是将新用户重定向到他的个人资料页面(假设您没有激活要求)

if(!empty($_POST)) {
   // validate and save to db
   // get last inserted user_id, say in $user_id
   header("Location: /users/$user_id");
}

这样,浏览器就会重定向,每当用户点击刷新时,您就不会遇到重复注册的问题。

保存到数据库后,重新加载页面:

if ($_POST) {
  // Save $_POST to database and other stuffs
  // Reload current page to discard $_POST
  header('Location: my_page.php');
}

这称为PRG或发布/重新加载/获取

您可以使用

unset($var)来取消设置变量。但是,我认为问题出在浏览器上;他们中的一些人试图变得聪明,无论您何时刷新页面,都会记住表单数据。如果您在URL栏上点击"go"或"enter",它会进行"真正的"刷新。