0

活动.php

//Form start

   <form action=''>

   </form>

//Form End

//Get POST Values

<?php 

$_POST[''];

?>

//End

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

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

4

3 回答 3

5

学习 PRG 模式,这样你就可以正确地做到这一点:)

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

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

if(!empty($_POST)) {
   // validate and save to db

   // get last inserted user_id
}

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

if(!empty($_POST)) {
   // validate and save to db

   // get last inserted user_id, say in $user_id

   header("Location: /users/$user_id");
}

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

于 2012-05-31T05:36:51.280 回答
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

于 2012-05-31T05:35:51.383 回答
-1

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

于 2012-05-31T05:35:17.377 回答