2011-08-31 4 views
1

웹 사이트를 구축 중이며 어떻게 해야할지 모르는 무언가가 나타났습니다.PHP는 URL에서 쿼리 문자열을 제거합니다.

내 웹 사이트 회원이 클릭 할 수있는 모든 페이지에 링크가 있으며, 링크를 클릭하면 끝에있는 검색어와 함께 동일한 페이지로 이동합니다. 이 페이지에 지금

/contact?tab=hotlink 

는 숨겨진 양식과 확인 버튼, 나는 $ _SERVER를 사용하는 거라고이다 [ 'HTTP_REFERER']하지만, 이전의 URL이/접촉? 탭 = 핫 링크이고 내가 할 필요 ...
/contact 

는 문자열에 대한 방법이 쿼리의 모든, 나는 세션을 함께 할 수있는 대체, 오히려 그것을이 unnessessary 세션을 많이 설정하는 의미로 다른 방법을 할 것입니다.

감사

답변

3

쿼리 문자열은

$_SERVER['QUERY_STRING'] 

에 따라서

str_replace($_SERVER['QUERY_STRING'], '', $_SERVER['HTTP_REFERER']) 

당신에게 쿼리 문자열없이 요청을 제공해야합니다.

+0

고맙다고 생각하지 않았습니다. 지금 그것을 시도 할 것입니다 :) – carlgcode

0

보통은 페이지 새로 고침과 그에 대한 쿼리 문자열을 할 것입니다 - 당신은이 같은 대신 #hashed URL로 연결합니다 :

<a href="/contact#tab=hotlink">Hotlink</a> 

그런 다음 hashchange event을 잡으려고 자바 스크립트 처리기를 사용하십시오 (페이지 새로 고침이 필요하지 않으므로 훨씬 빠름) '핫 링크'탭에서 필요한 항목을 동적으로로드/표시 할 수 있습니다.

그런 식으로 서버가 작동하지 않아도 페이지가 훨씬 더 반응적입니다.

$http_referer_full_url = explode("?", $_SERVER["HTTP_REFERER"]); 
$http_referer_base_url = $http_referer_full_url[0]; 

Rijk의 대답은 $_SERVER['QUERY_STRING'] 때문에 작동하지 않습니다 @ : 당신은 ?에 문자열을 분할하여 리퍼러에서 기본 URL을 추출하는 PHP explode function를 사용하여이

+0

그리고 자바 스크립트가 비활성화되어 있다면? – carlgcode

+0

만약 당신이 거기 밖으로 js 사용자의 아주 작은 부분에 대해 매우 우려하는 경우, 당신은 물론 몇 농구를 뛰어 넘을 필요가있을 것입니다. 기능을 많이 저하시킬 수 있습니다. body class = 'no-js'트릭을 css로 사용하거나 #hashes에 Javascript를 삽입하십시오. 예를 들면 다음과 같습니다. –

0

이 예에서 참조하는 페이지의 쿼리 문자열이 아니라 현재 실행중인 스크립트를 참조합니다.

2

에 대한 $_SERVER['SCRIPT_NAME']을 사용할 수 있습니다

관련 문제