由于我在某种程度上提出了我的问题(Previous question),大多数用户都认为“老兄这是tl; dr”让我说得更简单。我想使用post-redirect-get模式来避免用户刷新网站并重新提交数据等...我明白为了这样做我必须从html表单重定向用户,通过php处理脚本并返回到显示已处理数据的新站点(或原始html表单站点)。
现在我的问题。如何从我的PHP获取处理后的数据?我不明白GET部分...目前我不知道如何在没有include 'site.html';
的漂亮的html显示(视图)页面中显示php生成的数据。这个例子不是我要找的:Simple Post-Redirect-Get code example。以下示例中的代码只是将我重定向到当前页面。
答案 0 :(得分:4)
这取决于背景,但例如:
鉴于:invoice-form.html
,invoice-processing.php
和current-invoices.php
:
invoice-form
action="invoice-processing.php"
invoice-processing
invoice-processing
从表单中获取数据并将其放入数据库invoice-processing
输出302
状态和Location
标题current-invoices
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 );