【发布时间】:2013-02-20 00:40:02
【问题描述】:
我在这里和其他地方搜索了很多帖子,但似乎找不到解决我的问题的方法。 我有一个显示数据库条目的页面:database.php。可以使用表单过滤这些条目。当我过滤它们并仅显示我感兴趣的那些时,我可以单击一个条目(作为链接),将我带到该条目页面(通过 php GET)。当我在该条目页面(即“view.php?id=1”)并点击后退按钮(返回 database.php)时,过滤器表单需要确认表单重新提交。有什么办法可以预防吗?
这里有一些(简化的)代码示例:
数据库.php:
<form>
<select>
<option>1</option>
<option>2
<option>
</select>
<input type="submit" name="apply_filter" />
</form>
<?php
if ( isset( $_POST[ "apply_filter" ] ) ) { // display filtered entries
$filter = $_POST[ "filter" ];
$q = "Select * from table where col = '" . $filter . "'";
$r = mysql_query( $q );
} else { // display all entries
$q = "Select * from table";
$r = mysql_query( $q );
}
while ( $rec = mysql_fetch_assoc( $r ) ) {
echo "<a href='view.php?id=" . $rec[ "id" ] . "'>" . $rec[ "name" ] . "</a><br />"; // this is where the link to the view.php page is...
}
?>
现在如前所述,如果我点击链接,它会将我带到“view.php?id=whatever”。在该页面上,我只是从 url 中获取 ID 以显示该单个条目:
view.php:
<?php
$id = $_GET[ "id" ];
$q = "Select * from table where id = '" . $id . "'";
$r = mysql_query( $q );
while ( ) {
// display entry
}
?>
如果我现在点击返回按钮,database.php 上的表单(用于过滤数据库结果的表单)需要确认重新提交。这不仅很烦人,对我来说也没用。
我该如何解决这个问题?我希望我的问题的代码示例和解释是足够的。如果不让我知道,我会尝试指定。
【问题讨论】:
-
POST -> ServerSide 302 重定向 -> GET
-
我知道有很多关于这个主题的帖子。浏览它们我无法弄清楚自己的问题,所以我决定将其作为一个新问题提出。
-
您可能想要使用
Post-Redirect-Get模式,请参阅en.wikipedia.org/wiki/Post/Redirect/Get 和stackoverflow.com/questions/15288229/…
标签: php forms get refresh back