Предполагая URL-адрес:
www.example.com/?val=1#part2
PHP может читать переменные запроса, val1
используя массив GET.
Является ли значение хеш-функции part2
доступным для чтения? Или это только до браузера и JavaScript?
источник
Предполагая URL-адрес:
www.example.com/?val=1#part2
PHP может читать переменные запроса, val1
используя массив GET.
Является ли значение хеш-функции part2
доступным для чтения? Или это только до браузера и JavaScript?
Основная проблема в том, что браузер даже не отправит запрос с фрагментной частью. Часть фрагмента разрешается прямо в браузере. Так что это доступно через JavaScript.
В любом случае, вы можете разбить URL на биты, включая фрагментную часть, используя parse_url () , но это, очевидно, не ваш случай.
Простой тест, доступ к http: // localhost: 8000 / hello? Foo = bar # это-не-отправлено-на-сервер
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [02/Jun/2009 12:48:47] code 404, message File not found
localhost - - [02/Jun/2009 12:48:47] "GET /hello?foo=bar HTTP/1.1" 404 -
Сервер получает запрос без #appendage - все, что после хеш-тега, является просто поиском привязки на клиенте.
Вы можете найти имя привязки, используемое в URL, через javascript, используя, например:
<script>alert(window.location.hash);</script>
Функция parse_url () в PHP может работать, если у вас уже есть необходимая строка URL, включая фрагмент ( http://codepad.org/BDqjtXix ):
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
Но я не думаю, что PHP получает информацию о фрагментах, потому что это только для клиента.
Это можно получить из Javascript - как window.location.hash
. Оттуда вы можете отправить его на сервер, например, с помощью Ajax, или закодировать его и поместить в URL-адреса, которые затем можно будет передать на серверную сторону.
www.example.com/?val=1#part2
вам придется перенаправить на него на сервере, как это:www.example.com/?redirectUrl=%2F%3Fval%3D1%23part2
и, конечно, вам нужно добавить в поддержку, чтобы перенаправить на этот другой URL на другой странице. Не удивительно, и не работает для всех случаев использования, конечно, но работает для закладок. Обратите внимание, что если вы сделаете это, вы не должны разрешать перенаправления на абсолютные URL-адреса, только относительные URL-адреса, чтобы гарантировать, что вы не будете открыты для небезопасных перенаправленийХеш никогда не отправляется на сервер, поэтому нет.
источник
Да, это правда, сервер не получает якорную часть. Однако есть обходной путь с использованием куки. Вы можете найти его здесь: http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
источник
Ответ - нет.
Основное назначение хэша - прокрутить до определенной части страницы, где вы определили закладку. например, прокрутите до этой части при загрузке страницы.
Обзор будет прокручиваться так, что эта строка будет первым видимым контентом на странице, в зависимости от того, сколько контента следует за линией.
Да, javascript может получить к нему доступ, и тогда простой вызов ajax сделает волшебство
источник
Что о:
Динамически захватить хэш
Чтобы сделать его более беглым:
Полный пример с использованием только Javascript и PHP
источник
Я думаю, что хеш-значение используется только на стороне клиента, поэтому вы не можете получить его с помощью php.
Вы можете перенаправить его с помощью JavaScript на PHP, хотя.
источник
Это должно работать
источник
Эта часть URI после элемента
#
называется «фрагмент» и по определению доступна / обрабатывается только на стороне клиента (см. Https://en.wikipedia.org/wiki/Fragment_identifier ).На стороне клиента к этому можно получить доступ, используя javaScript с
window.location.hash
.источник
Да, ты можешь:
Используйте этот метод для предотвращения ошибок:
И, конечно же, в PHP взорвать этого щенка и получить одно из значений
источник
Другое решение - добавить скрытое поле ввода на страницу php:
Используя javascript / jQuery, вы можете установить значение этого поля при загрузке страницы или при ответе на событие:
В php на стороне сервера вы можете прочитать это значение, используя коллекцию $ _POST:
источник
Мы можем сделать это и с другим подходом: например, сначала получить значение хеша из js, вызвать ajax, используя этот параметр, и делать то, что мы хотим
источник