后重定向-GET,GET?怎么样?

时间:2013-08-02 13:01:03

标签: php html

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

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

3 个答案:

答案 0 :(得分:4)

这取决于背景,但例如:

鉴于:invoice-form.htmlinvoice-processing.phpcurrent-invoices.php

  1. 用户填写invoice-form
  2. 上的数据
  3. 用户提交具有action="invoice-processing.php"
  4. 的表单
  5. 浏览器将数据发布到invoice-processing
  6. invoice-processing从表单中获取数据并将其放入数据库
  7. invoice-processing输出302状态和Location标题
  8. 浏览器转到current-invoices
  9. current-invoices从数据库中提取发票清单(包括最近提交的发票)并将其作为HTML文档发送到浏览器

答案 1 :(得分:1)

我希望这会有所帮助,因为我花了很长时间才能得到它。我测试了这样的理解。我有两个php页面,第一页(prg1.php)将表单发送到数据库,action设置为第二个(prg2.php)。 prg2.php检查POST数据,更新数据库并向prg1.php发出重定向,包含我需要作为GET变量传回的任何内容。 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();
  }
?>

答案 2 :(得分:0)

您可以尝试这样的事情:

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

/****************************************/
/* Has to be sent before anything else! */
/****************************************/
header( 'Location: http://www.yoursite.com/index.php?data='.$mydata );