|
|
|
| Вопрос мой может быть и покажется кому-то странным.
Все мы знаем, что в HTML ссылка вида
<A href="http://www.mysite/mypage.html#myparagraph>ТЕКСТ ССЫЛКИ</A>
| приведёт не только на указанную страницу, но и заставит броузер прокручивать её, если указанный параграф не в начале.
А вопрос вот в чём : если пытаться разобрать этот или аналогичный URL с помощью PHP - можно ли выделить этот самый элемент из URL ( #myparagraph ) - или PHP попросту не видит такой анкер и для PHP одно и то же, что http://www.mysite/mypage.html#myparagraph и что http://www.mysite/mypage.html ?
Во всяком случае, когда я распечатываю $_SERVER["PHP_SELF"], то адрес http://www.mysite/mypage.html#myparagraph он выдаёт как http://www.mysite/mypage.html, то есть для этой переменной нет разницы.
Есть ли какие-то переменные в PHP, способные увидеть анкер в URL типа http://www.mysite/mypage.html#myparagraph ? Или PHP видит только если написать http://www.mysite/mypage.html?p=myparagraph ? | |
|
|
|
|
|
|
|
для: Petter
(11.11.2011 в 15:11)
| | как я знаю в php нет возможности узнать anchor | |
|
|
|
|
|
|
|
для: Ильдар
(11.11.2011 в 16:39)
| | И тем не менее...
Если броузер посылает запрос вида http://www.site/page.html#anker , то независимо ни отчего сервер реагирует на это и выдаёт броузеру именно такой URL.
Наверное, как-то заголовком, но как?
В таком вопросе нужен специалист по принципу обмена данными броузера и сервера... а это уже и не совсем, конечно, PHP | |
|
|
|
|
|
|
|
для: Petter
(11.11.2011 в 19:48)
| | нет, сервер тоже не понимает такой ссылки. Это понимает javascript и он реагирует тем, что создает к примеру get запрос вида http://www.site/pages.php?action=anker и получает ответ от сервера в виде каких-либо данных, а потом javascript выводит эти данные в бразуер на странице http://www.site/page.html#anker. Вам кажется что сервер вас понял и выдал вам, что нужно? Нет, это всего лишь javascript сделал на странице подменю информации. | |
|
|
|
|
|
|
|
для: Ильдар
(11.11.2011 в 20:45)
| | Вот это и составляет мой вопрос.
Ясное дело, что запрос, конечно, был со стороны броузера, и что сервер "понял" запрос и ответил, и у меня в этом и заключается вопрос.
Если сервер посылает данные об анкере, значит, он их имеет. Ещё бы он их не имел! Ведь эти данные о ссылке находятся на странице, которую он хранит! Вопрос-то в том, где он хранит данные об анкере, и можно ли к ним туда добраться скриптом, если мне надо, с помощью PHP ?
Наверное, есть какой-то массив этих анкеров... но что гадать... просто я не нашёл этого в спецификации PHP, поэтому и спросил.
А то, что потом делает броузер - об этом я не спрашивал, это ясно. | |
|
|
|
|
|
|
|
для: Petter
(12.11.2011 в 00:28)
| | Штука в том, что PHP видит только то, что помещается в переменные окружения, а анкер в переменные окружения не попадает, поэтому вы не можете его извлечь на стороне сервера (хотя в ссылках можете его использовать без ограничений). Грубо говоря остается в браузере и браузер просто позиционирует страницу в соответствии с ним. | |
|
|
|
|
|
|
|
для: cheops
(12.11.2011 в 00:37)
| | Спасибо, Cheops !
Т. е. если я правильно Вас понимаю, у сервера есть страница, или как-то иначе, в базе, данные об анкере и он их присылает протоколом, а вот PHP "не в курсе" и не хранит эти анкеры в переменных и не может этот поток передачи данных об анкере контролировать... | |
|
|
|
|
|
|
|
для: Petter
(12.11.2011 в 02:19)
| | Серверу тоже анкер не нужен, он нужен только браузеру, браузер, если он по-нормальному написан его отправлять никуда не будет. Все URL в которых используется #, как правило, обвешены JavaScript-кодом, который приводит URL к каноническому виду. | |
|
|
|
|
|
|
|
для: Petter
(12.11.2011 в 02:19)
| | Дело в том, что # даже не является допустимым символом для URL - его кодировать нужно, чтобы сервер его мог корректно получить. | |
|
|
|
|
|
|
|
для: Petter
(12.11.2011 в 02:19)
| | Не совсем верно!
Серверу вообще не передается анкер и он не в курсе, что в URL он изначально присутствовал. Анкер в урл управляет поведением браузера локально. Только браузера и только локально! Т.е. если адекватный браузер видит в УРЛ фрагмент #абракадабра, то он ищет в коде загруженной ХТМЛ страницы анкер с тем же названием и отматывает страницу в это место. Ну а раз уж сервер не знает про анкер, то ПХП и подавно =) | |
|
|
|
|
|
|
|
для: cheops
(12.11.2011 в 00:37)
| | Спасибо, Сheops.
Я понял.
Действительно, серверу незачем знать про анкер, раз он не попадает в QUERY_STRING.
Достаточно того, что броузер помнит о том, о чём он запрашивал.
Сервер просто в таком случае отдаёт страницу.
Спасибо и всем остальным, кто ответил. | |
|
|
|
|
|
|
|
для: Petter
(11.11.2011 в 19:48)
| | это в браузер заложено. в php значение после # не получить | |
|
|
|
|
|
|
|
для: AlexSol
(11.11.2011 в 20:47)
| | Да запросто - parse_url()
Вам нужно значение - fragment
http://php.su/functions/?f=parse-url&choice=info | |
|
|
|
|
|
|
|
для: Tamplier
(12.11.2011 в 11:00)
| | а что в фугкцию передавать будем? | |
|
|
|