在PHP中取消设置POST值

时间:2012-05-31 05:32:45

标签: php post

acitvity.php

//Form start

   <form action=''>

   </form>

//Form End

//Get POST Values

<?php 

$_POST[''];

?>

//End

如果我在提交表单后刷新页面,则会重新提交所有发布的值,因为所有值都在浏览器中,因此重新提交。当我为此搜索解决方案时,我得到的信息是,如果形式&amp;在单独的php文件中完成后期操作,然后在刷新时发布值不再有问题。

这是解决方案吗?但现在我必须在单个文件和&amp;在刷新时不应再次提交POST值..有什么办法可以做到这一点???

3 个答案:

答案 0 :(得分:5)

学习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");
}

这样,浏览器会重定向,只要用户点击刷新,你就不会有双重注册的问题。

答案 1 :(得分:3)

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

if ($_POST) {
  // Save $_POST to database and other stuffs

  // Reload current page to discard $_POST
  header('Location: my_page.php');
}

这称为PRG或Post/Reload/Get

答案 2 :(得分:-1)

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