0

由于我以某种方式提出了我的问题(上一个问题),毫无疑问大多数用户认为“老兄,这是 tl;dr”让我说得更简单。我想使用 post-redirect-get 模式来避免用户刷新站点并重新提交数据等...我知道为了这样做,我必须通过 php 处理脚本将用户从 html 表单重定向并返回到显示已处理数据的新站点(或原始 html 表单站点)。

现在我的问题。如何从我的 php 中获取我处理过的数据?我不明白 GET 部分...目前我不知道如何在没有include 'site.html';. 这个例子也不是我要找的:Simple Post-Redirect-Get code example。下面示例中的代码只是将我重定向到当前页面。

4

3 回答 3

4

这取决于上下文,但例如:

给定:invoice-form.html和:invoice-processing.phpcurrent-invoices.php

  1. 用户填写数据invoice-form
  2. 用户提交的表单具有action="invoice-processing.php"
  3. 浏览器 POST 数据到invoice-processing
  4. invoice-processing从表单中获取数据并将其放入数据库
  5. invoice-processing输出302状态和Location标题
  6. 浏览器转到current-invoices
  7. current-invoices从数据库中获取发票列表(包括最近提交的发票)并将它们作为 HTML 文档发送到浏览器
于 2013-08-02T13:06:06.633 回答
1

我希望这会有所帮助,因为我也花了很长时间才得到它。我像这样测试了我的理解。我有两个 php 页面,第一个页面 (prg1.php) 将表单发送到数据库,操作设置为第二个页面 (prg2.php)。prg2.php 检查 POST 数据,更新数据库并使用我需要作为 GET 变量传回的任何内容发出重定向到 prg1.php。prg2.php 看起来像这样

<?php
  if (isset($_POST['gameid'])){
    // process the data, update the database
    $gameid = htmlspecialchars($_POST['gameid']);
    $playerid = htmlspecialchars($_POST['playerid']);
    $message = htmlspecialchars($_POST['message']);



    //redirect, after updating the database
    $getinfo = '?gameid=' . $gameid . '&playerid=' . $playerid;

    header("Location: prg1.php" . $getinfo );
    exit();
  }
?>
于 2018-06-11T20:51:23.207 回答
0

你可以尝试这样的事情:

/****************************************/
/*          Fetch my data.              */
/****************************************/
$mydata = $_GET["data"];

/****************************************/
/* Has to be sent before anything else! */
/****************************************/
header( 'Location: http://www.yoursite.com/index.php?data='.$mydata );
于 2013-08-02T13:10:28.433 回答