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¤t_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.
weder funktionierte :/
Sind Sie immer einen beliebigen Wert in $Speicherort-variable?
siehe den zweiten edit (Ausgangs-url)
InformationsquelleAutor AlxVallejo | 2012-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, du bist auf der Suche nach dem verborgenen Eingang.
Etwas wie dieses:
Dann darauf zugreifen, genau wie alle anderen $_GET-oder $_POST-parameter.
BEARBEITEN zu reagieren, um änderungen:
Konnte Sie
echo $location; die;
nach dieser Zeile:und lassen Sie mich wissen, was die Ausgabe ist? Dies wird uns sagen, ob es weitergegeben wird falsch verarbeitet oder falsch.
Bearbeitet meine Antwort zu beheben.
Siehe EDIT #3 (ich entschuldige mich für alle Bearbeitungen!)
InformationsquelleAutor Jim D
Verwenden Sie einfach
$_SERVER['HTTP_REFERER']
in Ihremsearch_result.php
. Eine weitere option ist die Verwendung von hidden-input, aber ich würde mit dem ersten.InformationsquelleAutor dfsq
Den besseren Weg, um den aktuellen URl, die Sie erstellen, einen versteckten Eingang und passieren Sie die aktuelle URL, und fangen Sie in server-Ende. also
InformationsquelleAutor Prabhu Nandan Kumar