Передайте текущий URL в форму отправки - PullRequest
5 голосов
/ 01 февраля 2012

Как продолжение Добавление значений в строку запроса в 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-адресом?

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);
                }
?>

Я либо передаю их неправильно, либо получаю их неправильно, либо и то и другое!

РЕДАКТИРОВАТЬ # 2: Выходной 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

РЕДАКТИРОВАТЬ # 3 Я повторил выходной URL-адрес, и это правильно.Я избавился от preg_match, чтобы посмотреть, смогу ли я получить тот же URL при обработке формы.Интересно, что я получил страницу, не найденную.Я решил добавить http:// заголовок, и это сработало:

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

Поэтому я считаю, что единственное, что здесь не так, это preg_replace.

Ответы [ 3 ]

9 голосов
/ 01 февраля 2012

Я думаю, что вы ищете скрытый ввод.

Примерно так:

<input type="hidden" name="current_url" value="(Current URL here)" />

Затем получите доступ к нему так же, как к любому другому параметру $ _GET или $ _POST.


РЕДАКТИРОВАТЬ, чтобы ответить на изменения:

Не могли бы вы echo $location; die; после этой строки:

$location =  $_GET['current_url'];

и дайте мне знать, что вывод? Это скажет нам, был ли он передан неправильно или обработан неправильно.

2 голосов
/ 01 февраля 2012

Просто используйте $_SERVER['HTTP_REFERER'] в вашем search_result.php.Другой вариант - использовать скрытый ввод, но я бы остановился на первом.

0 голосов
/ 19 июля 2017

Лучший способ получить текущий URl - создать скрытый ввод и передать текущий URL-адрес и перехватить конец сервера. т.е.

<input type="hidden" name="cur_url" value="(your Current URL here)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...