Я пытаюсь найти способ сохранить хэш-часть URL-адреса и как переменную PHP. Эта идея немного странная, но неся со мной …
Я хотел бы извлечь фрагмент «location» из следующего URL-адреса и сохранить его как переменную PHP.
http://www.example.com/#location
Однако обсуждение по этой ссылке указывает, что фрагмент URL-адреса доступен только через JavaScript.
Но можно ли создать ссылку, в которой фрагмент дублируется в URL-адресе, анализируется PHP, а затем удаляется с помощью mod rewrite? Так….
Оригинальный URL:
http://www.example.com/location/#location
PHP получает переменную местоположения благодаря простому «местоположению» в URL-адресе
Затем Apache переписывает ссылку на:
http://www.example.com/#location
Мне любопытно узнать, есть ли элегантный способ решить эту проблему.
Для этого вам нужно использовать Javascript. Существует несколько различных вариантов – при загрузке страницы вы можете использовать XmlHTTPRequest (запрос AJAX), чтобы сообщить серверу, какие были дополнительные параметры URL. В Alternatley вы можете проверить, есть ли дополнительные параметры (также через Javascript), и если вы найдете их, отправьте обратно на другой URL-адрес, который имеет эти параметры, закодированные в самом URL-адресе.
Фрагмент никогда не отправляется на сервер, согласно этой теме на форумах Mod_Rewrite. Таким образом, это может быть невозможно, если вы не используете AJAX для изменения страницы после факта.
Другая идея заключалась бы в том, чтобы Javascript превратил хэш в параметр $ _GET, а затем обновил страницу.
вы можете отправить хэш-фрагмент с помощью скрипта AJAX в PHP и выполнить немедленное обновление (перезагрузка страницы)
После отправки значений на сервер через AJAX. Вы можете установить значения фрагментов в SESSION. Когда вы обновляете страницу, вы можете получить фрагмент, который был установлен в сеансе и обработать, затем отобразить соответствующий контент. Потому что мы не можем получить значения фрагментов через PHP_SELF / QUERY_STRING и т. Д. Нам нужно это, чтобы увеличить скорость нашей веб-страницы, такой как Gmail.
Он содержится в значении «фрагмент», возвращаемом функцией 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