我已經在這裏和其他地方搜索了很多帖子,但似乎無法找到解決我的問題。 我有一個顯示數據庫條目的頁面:database.php。這些條目可以用表單過濾。當我過濾它們,只顯示我感興趣的,我可以點擊一個條目(作爲一個鏈接),帶我到該條目頁(通過PHP GET)。當我在該條目頁面(即「view.php?id = 1」)並點擊後退按鈕(返回到database.php)時,過濾器表單需要確認表單重新提交。有什麼辦法可以防止這種情況發生?防止表單重新提交後點擊按鈕
這裏有一些(簡化)代碼示例:
database.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 =什麼」。在該頁面中,我剛剛從URL獲得ID,以顯示單個條目:
view.php:
<?php
$id = $_GET[ "id" ];
$q = "Select * from table where id = '" . $id . "'";
$r = mysql_query($q);
while () {
// display entry
}
?>
如果我現在打的返回按鈕,在database.php中的形式(用於過濾DB結果的那個)需要確認重新提交。這不僅非常煩人,對我也無用。
我該如何解決這個問題?我希望代碼示例和我的問題的解釋是足夠的。如果不讓我知道,我會嘗試指定。
** POST ** - > * ServerSide 302重定向* - > ** GET ** – scunliffe 2013-03-05 15:15:09
我知道有很多這個主題的帖子。瀏覽他們我無法弄清楚我自己的問題,所以我決定把它作爲一個新問題。 – user1889382 2013-03-05 15:16:19
您可能想要使用'Post-Redirect-Get'模式,請參閱https://en.wikipedia.org/wiki/Post/Redirect/Get以及http://stackoverflow.com/questions/15288229/automatically-在瀏覽器中重新發送請求時使用後退按鈕 – 2014-07-29 14:59:31