получить хэш в URL с помощью php? - PullRequest
5 голосов
/ 24 декабря 2009

кто-то здесь в SO сказал мне, что хеш (#) в URL может быть получен функцией php parse_url? это правда?

мой веб-сайт получил множество эффектов ajax, и я хочу иметь возможность передавать URL-адрес с хешем в index.php, чтобы он мог отображать информацию на основе значений хеш-функции.

например. если пользователь щелкает и просматривает мой веб-сайт и находит то, что хочет поделиться, он может скопировать адрес и отправить его своему другу, и когда этот человек входит, он видит то же самое.

Я пытался использовать javascript для сохранения значений хеш-функции в файлах cookie, но это не работает с Firefox, и это слишком медленно в Safari (HTML-файл будет отображаться первым, поэтому необходимо обновить страницу во второй раз, чтобы получить правильный контент показано).

приветствуется любое другое решение

РЕДАКТИРОВАТЬ: я очень смущен .. если я использую parse_url, я должен набрать url сам в php, чтобы получить хэш? какой смысл тогда ... мой вопрос, может ли мой друг ввести URL с # значениями и php мог бы его обработать? это похоже на нет, я прав?

Ответы [ 5 ]

11 голосов
/ 24 декабря 2009

Хеш в URL даже не получает на сервер. Нет никакого способа получить к нему доступ с любого языка программирования на стороне сервера.

5 голосов
/ 24 декабря 2009

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

Обратите внимание на запись под ключом «фрагмент».

0 голосов
/ 06 мая 2017

Как только вы получите #value, используя 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>   
0 голосов
/ 24 декабря 2009

Пример из php manual :

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

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?> 
0 голосов
/ 24 декабря 2009

кто-то здесь в ТАК сказал мне, что хеш (#) в URL может быть получен по php функции parse_url? это правда?

Да:

parse_url('/1343509/poluchit-hesh-v-url-s-pomoschy-php', PHP_URL_FRAGMENT); // 1957040

Но вы не можете определить хэш на стороне сервера, не зная полного URL-адреса априори, не будучи уверенным, что HTTP_REFERER содержит этот хэш (не думайте).

...