2010-07-13 9 views
1

가능한 중복 :
retrieve the hash in the url with php?PHP로 URL에 '#'을 가져 오는 방법은 무엇입니까?

URL을 얻을 $_SERVER['HTTP_HOST']$_SERVER["REQUEST_URI"]를 사용하여

스피

http://www.abc.com/page_url#bookmark

처럼 해당 URL에 북마크를 containg하는 페이지를 가진 스피 하지만 URL은까지만 가능합니다.http://www.abc.com/page_url 즉 북마크 된 링크가 제공되지 않습니다.

php에서 내 전체 URL ('내용'포함)을 가져올 수 있습니까?

편집 :

내가 할 수있는 URL이 http://www.abc.com/page_url#bookmark 그때 내가 http://www.abc.com/page_url#bookmark/ .when 메신저 $ _SERVER [함께이 일에 리디렉션 할 경우 내가 '/'내 URL의 예에 추가 할 수 있습니다 원하는 참조 "REQUEST_URI"]는 http://www.abc.com/page_url/#bookmark으로 잘못되었습니다. 이제 어떻게 할 수 있을까요?

+0

편집에 관해서는 : 당신이 가장하고 싶은 것은 의미가 없습니다. "http : // www.abc.com/page_url # bookmark"를'http : // www.abc.com/page_url # bookmark /'로 포워딩하고자하는 이유를 설명해주십시오 ... 어쨋든,이 작업은 오직 자바 스크립트; 내 대답을 보라. – Artefacto

답변

6

대부분의 브라우저는 URL을 요청할 때 #fragment를 보내지 만 내부적으로 처리 ... 그래서 PHP 정보합니다 (라는 웹 서버를 전송하지 않는 정보

+1

다른 방법으로 가져올 수 없습니까? – developer

+2

@ 개발자가 서버에 보내지 않은 ** 없습니다 **. –

+0

PHP는 브라우저가 서버에 보낸 요청으로 만 작동합니다. 목표를 약간 다르게 지정할 수 있습니다 : http://www.abc.com/page_url?fragment=bookmark#bookmark 그리고 $ _GET [ 'fragment']를 사용하여 액세스하십시오 –

3

브라우저에 액세스 할 수 없습니다하지 않습니다 "조각"). 사실, 요청을 전혀하지 않을 수도 있습니다 (동일한 페이지로 연결되는 링크를 클릭하면 다른 부분).

유일한 방법은 Javascript를 사용하는 것입니다. self.document.location.hash을 사용하여 조각을 가져올 수 있습니다. 그런 다음 서버에 정보를 전송하라는 별도의 요청 (예 : 아약스)을 할 수 있습니다.

이것은 유용 할 수 있습니다. 사용자가 링크를 따라 갔을 때 사용자가 착륙 한 섹션에 대한 통계를 저장하지만 조각을 기반으로 서버 쪽 렌더링 방식을 변경할 수 있습니다 (물론 자바 스크립트를 사용하여 사용자를 다른 페이지로 리디렉션하거나 동일한 페이지로 리디렉션 할 수 있음) 페이지를 쿼리 문자열에 전달하여 다른 방식으로 렌더링 할 수 있음).

관련 문제