PHP & Hash / Фрагмент Часть URL - PullRequest
8 голосов
/ 22 июля 2009

Я пытаюсь найти способ сохранить хэш-часть URL-адреса и как переменную PHP. Эта идея немного странная, но потерпите меня ...

Я бы хотел извлечь фрагмент "location" из следующего URL и сохранить его как переменную PHP.

http://www.example.com/#location

Однако обсуждение по этой ссылке указывает на то, что фрагмент URL доступен только через JavaScript.

Но можно ли создать ссылку, где фрагмент дублируется в URL-адресе, анализируется PHP, а затем удаляется путем перезаписи мода? Так ....

Оригинальный URL:

http://www.example.com/location/#location

PHP получает переменную местоположения благодаря простому «местоположению» в URL

Затем Apache переписывает ссылку на:

http://www.example.com/#location

Мне любопытно узнать, есть ли элегантный способ решения этой проблемы.

Ответы [ 5 ]

9 голосов
/ 22 июля 2009

Вам нужно будет использовать Javascript, чтобы прочитать это. Есть несколько разных опций - при загрузке страницы вы можете использовать XmlHTTPRequest (запрос AJAX), чтобы сообщить серверу, какие были дополнительные параметры URL. В качестве альтернативы вы можете проверить, есть ли дополнительные параметры (также с помощью Javascript), и, если вы обнаружите их, отправьте сообщение на другой URL, в котором эти параметры закодированы в самом URL.

5 голосов
/ 22 июля 2009

Фрагмент никогда не отправляется на сервер, в соответствии с этой веткой на форумах Mod_Rewrite. Так что это может быть невозможно, если вы не используете AJAX для изменения страницы после факта.

Другая идея состояла бы в том, чтобы Javascript превратил хеш в параметр $ _GET, а затем обновил страницу.

0 голосов
/ 26 октября 2011

Содержится в значении фрагмента, возвращаемом из PHP-функции parse_url .

Из руководства по PHP:

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

Вернется:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
/path
0 голосов
/ 08 августа 2010

После того, как вы отправите значения на сервер через AJAX. Вы можете установить значения фрагмента в СЕССИИ. Когда вы обновляете страницу, вы можете получить фрагмент, который был установлен в сеансе, и обработать, а затем отобразить соответствующий контент. Потому что мы не можем получить значения фрагмента через PHP_SELF / QUERY_STRING и т. Д. Нам нужно это, чтобы увеличить скорость нашей веб-страницы, такой как Gmail.

0 голосов
/ 22 июля 2009

вы можете отправить хеш-фрагмент через AJAX в PHP-скрипт и выполнить немедленное обновление (перезагрузить страницу)

...