Pass aktuelle URL auf Formular Absenden

Als eine Fortsetzung der Hinzufügen von Werten zu einem Query-String in einem URL, ich habe ein Suchfeld, wird das hinzufügen zusätzlicher Argumente zu den aktuellen URL an.

http://example.com/?s=original+new+arguments&fq=category

Form von code sieht wie folgt aus:

<form id="FilterSearch" method="get" action="http://example.com/search_result.php">

Wo search_result.php ist nur eine neue Seite habe ich erstellt, um eine Analyse der reichen und leiten mit der neuen URL.

Wie kann ich pass den ursprünglichen URL search_result.php so, dann kann ich das manipulieren der URL?

EDIT #1 : ich habe ein hidden-input:

<?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" />

Meine Ausgabe ist nur mehr die Argumente für die Vorlage der Seite (search_result.php) und nicht die beabsichtigte Abfrage Seite.

<?php
if (isset($_GET['send'])){
                $searchField = urlencode($_GET['SearchField']);
                $location =  $_GET['current_url'];
                $location = preg_replace($location, '/([?&]s=)([^&]+)/', '$1$2+'.$searchField);
                header('Location: '.$location);
                }
?>

Bin ich entweder übergeben Sie falsch oder bekommen Sie es falsch, oder beide!

EDIT #2 : Ausgabe URL:

http://example.com/wp-content/themes/child_theme/search_result.php?SearchField=newTerm&current_url=www.example.com%2F%3Fs%3DoldTerm%26searchsubmit%3D&send=Search

EDIT #3
Ich hallte die Ausgabe-URL und es ist richtig. Ich entledigte sich die preg_match nur zu sehen, wenn ich könnte Holen Sie sich die gleiche URL, wenn ich verarbeitete form. Interessanterweise bekam ich ein "Seite nicht gefunden". Ich entschieden, um http:// den Kopf-und es funktionierte:

header('Location: http://'.$location);

Also, ich glaube, dass das einzige, was hier falsch ist das preg_replace.

Es sieht aus wie Sie tun müssen, Wert="<?php echo $current_url; ?>". Sie können auch $_SERVER['HTTP_REFERER'] wie dfsq schlägt als alternative zu dieser Methode, aber es ist nicht immer zuverlässig.
weder funktionierte :/
Sind Sie immer einen beliebigen Wert in $Speicherort-variable?
siehe den zweiten edit (Ausgangs-url)

InformationsquelleAutor AlxVallejo | 2012-02-01

Schreibe einen Kommentar