作爲Adding Values to a Query String in a URL的延續,我有一個搜索框,將添加額外的參數到當前的URL。通過表單提交當前URL
http://example.com/?s=original+new+arguments&fq=category
形式的代碼如下所示:
<form id="FilterSearch" method="get" action="http://example.com/search_result.php">
哪裏search_result.php就是我創建解析提交,並使用新的URL重定向了新的一頁。
如何將原始URL傳遞給search_result.php以便我可以操縱URL?
編輯#1:我添加了一個隱藏輸入:
<?php $current_url = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?>
<input type="hidden" name="current_url" value="<?php $current_url; ?>" />
<input name="send" id="send" type="submit" value="Search" />
我的輸出僅添加參數提交頁面(search_result.php),而不是預期的查詢頁面。
<?php
if (isset($_GET['send'])){
$searchField = urlencode($_GET['SearchField']);
$location = $_GET['current_url'];
$location = preg_replace($location, '/([?&]s=)([^&]+)/', '$1$2+'.$searchField);
header('Location: '.$location);
}
?>
我要麼通過他們錯誤或讓他們錯了或兩個!
編輯#2:輸出URL是這樣的:
http://example.com/wp-content/themes/child_theme/search_result.php?SearchField=newTerm¤t_url=www.example.com%2F%3Fs%3DoldTerm%26searchsubmit%3D&send=Search
編輯#3 我附和輸出URL,它是正確的。我擺脫了preg_match,看看我是否可以在處理表單時獲得相同的URL。有趣的是,我找不到一個頁面。我決定增加HTTP://頭和它的工作:
header('Location: http://'.$location);
因此,因此,我認爲,錯在這裏的唯一事情是preg_replace函數。
它看起來像你需要做value =「<?php echo $ current_url;?>」。你也可以使用$ _SERVER ['HTTP_REFERER']像dfsq建議的那樣替代這種方法,但它並不總是可靠的。 – 2012-02-01 19:53:33
既沒有工作:/ – AlxVallejo 2012-02-01 20:01:40
你是否在你的$ location變量中獲得任何值? – 2012-02-01 20:04:47