是否可以在不執行重定向的情況下更改響應URL?在不重定向的情況下更改響應URL
稍長的故事......
由於與HTML窗體的限制下,因爲從操作URL查詢字符串沒有提交到服務器不工作:
<?php // handler.php ?>
...
<form action="handler.php?lost=value" method="get">
<input type="text" name="filter-keyword" value="" />
<input type="submit" name="do-submit" value="Submit" />
</form>
...
所以我決定切換到使用post方法並創建一個單獨的過濾器處理程序腳本,該腳本僅爲「handler.php」文件構造正確的查詢字符串。
<?php // handler.php ?>
...
<form action="filter-handler.php" method="post">
<input type="hidden" name="preserve-qs" value="lost=value" />
<input type="text" name="filter-keyword" value="" />
<input type="submit" name="do-submit" value="Submit" />
</form>
...
// filter-handler.php
<?php
$new_url = 'handler.php?filter-keyword=' . $_POST['filter-keyword'];
if (isset($_POST['preserve-qs']) && $_POST['preserve-qs'] != '')
$new_url .= '&' . $_POST['preserve-qs'];
header("Location: $new_url");
?>
是否有可能實現這一點而不執行重定向?
// filter-handler.php
<?php
$qs_args = array(
'filter-keyword' => $_POST['filter-keyword'];
);
if (isset($_POST['preserve-qs']) && $_POST['preserve-qs'] != '')
parse_str($_POST['preserve-qs'], $qs_args);
// Fake query string.
$_GET = $qs_args;
// handler script is blissfully unaware of the above hack.
include('handler.php');
// ???? HOW TO UPDATE QUERY STRING IN BROWSER ADDRESS BAR ????
// Following no good because it redirects...
//header("Location: $new_url");
?>
如果你只是在'get'表單類型中將'lost'屬性作爲''屬性放入,那會將該參數在URL上。 – Orbling 2011-05-25 23:42:47
請不要在標題中寫標籤。 – 2011-05-25 23:50:57
不幸的是,提交表單時會清除所有GET類型的參數。 – drudge 2011-05-25 23:59:23