кто-то здесь, в SO, сказал мне, что хэш (#) в URL-адресе может быть получен php-функцией parse_url? Это правда?
мой веб-сайт получил много эффектов ajax, и я хочу иметь возможность передавать URL-адрес с хешем в index.php, чтобы он мог отображать информацию, основанную на хэш-значениях.
например. если пользователь нажимает и перемещается на моем веб-сайте, и он нашел то, что хочет поделиться, тогда он может скопировать адрес и отправить его своему другу, и когда этот человек входит, он видит то же самое.
Я попытался использовать javascript для сохранения значений хэша в файлах cookie, но это не работает с firefox и слишком медленным в сафари (сначала отобразится html, поэтому вам нужно обновить страницу во второй раз для отображения правильного содержимого).
любое другое решение приветствуется
EDIT: im очень запутался..если я использую parse_url, я должен сам ввести url в php, чтобы получить хэш? в чем смысл тогда … мой вопрос, может ли мой приятель ввести URL-адрес с # значениями, а php может его обработать? кажется, нет, я прав?
parse_url()
может получить хэш из строки url. Обратите внимание на подпись:
mixed parse_url ( string $url [, int $component = -1 ] )
Вы уже знаете строку. Например, из документов:
<?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
Обратите внимание на запись под ключевым «фрагментом».
Хэш в URL-адресе даже не попадает на сервер. Вы не можете получить доступ к нему с любого языка программирования на стороне сервера.
Пример из руководства php :
<?php $url = 'http://username:password@hostname/path?arg=value#anchor'; print_r(parse_url($url)); echo parse_url($url, PHP_URL_PATH); ?>
кто-то здесь, в SO, сказал мне, что хэш (#) в URL-адресе может быть получен php-функцией parse_url? Это правда?
Да:
parse_url('http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php/1957040#1957040', PHP_URL_FRAGMENT); // 1957040
Но вы не можете определить хэш на стороне сервера, не зная полного URL-адреса априори, не уверен, что HTTP_REFERER имеет этот хеш (не думайте).
Как только вы получите # значение с помощью javascript, отправьте его обратно на сервер с помощью ajax или …. url: http://example.in/?paramvalue=PKDVS4G#access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8
<script> alert(window.location.hash); var myhashvalue = window.location.hash; //hash value like : #access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8 //ajax call to send myhashvalue to server </script>