Получение параметров URL из реферера

4 февр. 2013 г., 14:43:13
Просмотры: 20.3K
Голосов: 1

Не совсем уверен, относится ли этот вопрос к PHP или конкретно к WordPress...

Я реализую WordPress Settings API со страницей настроек с вкладками. Я добавил кнопку 'сбросить вкладку', но поскольку валидация выполняется на отдельной странице (options.php), я не могу определить, на какой вкладке я нахожусь - без добавления вкладки как скрытого поля, чего я хочу избежать.

Я нашел функцию wp_get_referer(), но она возвращает полный URL - я не уверен, как извлечь tab=tab1 в виде переменной.

Обновление - Ответ:

$url = parse_url(wp_get_referer());
parse_str($url['query'], $path);
$tab = $path['tab'];

Как указано в ответах, затем требуется некоторая валидация.

2
Комментарии

Ты делаешь это без JavaScript?

s_ha_dum s_ha_dum
4 февр. 2013 г. 16:48:09

Ага.

Моя форма находится по адресу wordpress/wp-admin/options-general.php?page=967slug_settings_page&tab=tab3 (обрати внимание на параметр tab) Затем settings_API отправляет форму в options.php (ядро WordPress), который вызывает функцию валидации (написанную мной). Я пытаюсь получить значение параметра tab внутри функции валидации.

Функция WordPress wp_get_referer() возвращает мне полный URL (URI?) - точно такой же как выше - но я не уверен, как извлечь значение 'tab' из него.

Jamie Jamie
4 февр. 2013 г. 18:41:09
Все ответы на вопрос 1
2

Если в URL присутствует tab=tab, тогда:

global $_GET;
var_dump($_GET); // только для отладки; Вы должны увидеть то, что вам нужно.

Это чистый PHP. Если вам действительно нужно обработать эту строку (не знаю, зачем вам это), используйте parse_url, а затем примените parse_str к части query.

$path = parse_url($url);
$path = parse_str($path, $output);
var_dump($output); // опять же, только для отладки

Для полноты картины, пожалуйста, не используйте эти значения без предварительной проверки.

Я вас правильно понял?

4 февр. 2013 г. 18:59:56
Комментарии

К сожалению, я не могу использовать $_GET, так как URL, из которого я пытаюсь получить параметр, является реферером, а не текущим URL.

Однако, учитывая, что я могу получить доступ к рефереру через функцию wp_get_referer, думаю, я смогу собрать решение с использованием parse_url и parse_str для извлечения параметра tab.

Спасибо за помощь

Jamie Jamie
4 февр. 2013 г. 19:23:32

Чтобы правильно закрыть этот вопрос, я экспериментировал с вашими предложениями, чтобы найти решение, которое добавил в свой исходный вопрос.

@s_ha_dum - спасибо за помощь.

Jamie Jamie
5 февр. 2013 г. 14:27:11