Как получить якорную часть URL после # в php - PullRequest
2 голосов
/ 23 июня 2009

При использовании механизма LightBox в моем проекте я получил URL http://nhs/search-panel.php#?patientid=2 Мне нужно собрать эту карту через механизм GET. Это возможно в PHP?

Ответы [ 4 ]

8 голосов
/ 23 июня 2009

Проще говоря: вы не можете! Браузеры не отправляют фрагмент (часть URL-адреса после хеш-метки) в своих запросах на сервер. Вы должны полагаться на некоторый клиентский JavaScript: возможно, вы можете переписать URL-адрес перед его использованием.

5 голосов
/ 23 июня 2009

Может быть, все остальные правы, и простого $ _GET достаточно, но если предполагается, что там есть # в вашем URL (http://nhs/search-panel.php#?patientid=2), вам придется делать это с JavaScript (и Ajax, например, JQuery), потому что все, что после # не включено в запрос, насколько я знаю.

1 голос
/ 23 июня 2009

Если вы проверяете журналы вашего сервера, вы должны увидеть, что ни один браузер на самом деле не передает часть #anchor URL-адреса запроса, поэтому вы не можете получить его на стороне сервера.

Если вам нужно это знать, вам нужно написать некоторый Javascript, чтобы извлечь его из document.location.href и отправить его на ваш сервер, либо превратив его в обычный параметр GET и перенаправив пользователя, либо в фоновом режиме с XMLHttpRequest / AJAX.

0 голосов
/ 23 июня 2009

Редактировать: Упс, это не сработает. На других постерах правильно сказано, что что-либо после хеша никогда не достигнет вашего сервера.

Что-то в этом роде должно вас сделать:

//Get complete URI, will contain data after the hash
$uri = $_SERVER['REQUEST_URI'];

//Just get the stuff after the hash
list(,$hash) = explode('#', $uri);

//Parse the value into array (will put value in $query)
parse_str($hash, $query);

var_dump($query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...