2009-12-24 6 views
5

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

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

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

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

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

EDIT: им очень confused..if я использую parse_url я должен ввести URL сам в PHP, чтобы получить хэш? в чем смысл тогда ... мой вопрос, может ли мой приятель ввести URL-адрес с # значениями, а php может его обработать? кажется, нет, я прав?

+1

Некоторые примеры кода, что вы имеете в виду, было бы полезно. – Myles

+0

PHP может обрабатывать его, если вы отправляете строку на сервер. Вы можете сделать это через ajax, сообщение в форме и т. Д. – Sampson

+0

, но не перегружать веб-браузер, когда пользователь вводит его правильно? – ajsie

ответ

5

parse_url() может получить хэш из строки url. Примечание: подпись:

mixed parse_url (string $url [, int $component = -1 ]) 

Вы уже знаете строку. Например, из документации:

<?php 

    $url = 'http://username:[email protected]/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

так значит нет? – ajsie

+0

Не обязательно. Вы можете передать строку на сервер, а затем использовать parse_url. – Sampson

+1

Вы можете получить доступ к этому значению хэша в javascript с помощью 'window.location.hash' – Sampson

11

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

0

кто-то здесь в 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 держит этот хэш (не думайте).

0

После того, как вы получите #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>