Adding Values to a Query String in a URLの続きとして、現在のURLに追加の引数を追加する検索ボックスがあります。フォーム提出時に現在のURLを渡す
http://example.com/?s=original+new+arguments&fq=category
フォームコードは次のようになります。search_result.phpは、私が提出し、新しいURLを使用してリダイレクト解析するために作成されたばかりの新しいページです
<form id="FilterSearch" method="get" action="http://example.com/search_result.php">
。
URLを操作できるように元のURLをsearch_result.phpに渡すにはどうすればよいですか?
EDIT#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);
}
?>
私はそれらを間違って渡しているか、間違っているか、あるいはその両方になっています。
EDIT#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
EDIT#3 私は出力URLをエコーし、それが正しいのです。 preg_matchを取り除いて、フォームを処理したときに同じURLを取得できるかどうかを確認しました。興味深いことに、私はページが見つかりません。 //ヘッダとそれが働いた:私はのhttpを追加することにしました
header('Location: http://'.$location);
したがって、私は間違ってここでの唯一の事はにpreg_replaceであると信じています。
value = "<?php echo $ current_url;?>"とする必要があるようです。この方法の代わりにdfsqが提案するような$ _SERVER ['HTTP_REFERER']を使うこともできますが、必ずしも信頼できるとは限りません。 –
どちらも機能しませんでした:/ – AlxVallejo
$ location変数に値がありますか? –