2012-01-04 2 views
2

내 홈페이지 중 하나에 대한 추천 URL이 홈페이지인지 확인하는 방법을 알아 내려고하고 있습니다. 홈페이지가 www.mysite.com/index.php 인 경우 간단하지만 www.mysite.com 일 때 어떤 일이 발생합니까?PHP가 추천 URL이 홈페이지인지 확인하십시오.

나는 단순히

$url = $_SERVER['HTTP_REFERER']; 
$pos = strrpos($url, "/"); 
$page = substr($url, $pos+1, (strlen($url)-$pos+1)); 
if (substr_count($url, 'index')) echo 'from index '; 

을 할 수있는 알고 있지만 나는 내 $ URL이 변수에 index.php에이 없습니다.

+0

당신이 확인해 봤어? 매번 www.mysite.com/index.php를 제공한다고 가정합니다. – mowwwalker

+0

@Walkerneo 웹 서버가 기본 페이지로 index.php를 제공하도록 구성된 경우 쉽게 www.mysite.com/ 일 수 있습니다. – DaveRandom

+0

정확하게, 내 문제입니다, index.php 내 홈페이지 URL에 존재하지 않습니다. – bikey77

답변

5

parse_url() 여기에서 당신을 도울 수 있습니다.

// An array of paths that we consider to be the home page 
$homePagePaths = array (
    '/index.php', 
    '/' 
); 

$parts = parse_url($_SERVER['HTTP_REFERER']); 
if (empty($parts['path']) || in_array($parts['path'], $homePagePaths)) echo 'from index'; 

N.B. 중요한 사항에 의존해서는 안됩니다. Referer: 헤더가 요청에서 누락되어 쉽게 스푸핑 될 수 있습니다. 모든 주요 브라우저는 예상 한대로 작동해야하지만 해커와 웹 크롤러는 그렇지 못할 수도 있습니다.

+1

내가 내 대답을 끝내기 10 초 전에 게시 됨! – Hossein

+0

Riiiiiiight ..... – mowwwalker

+0

@Hossein ... 그리고 나는 * 타이핑 할 때 쓰레기였다 ... :-P – DaveRandom

0
$url = parse_url($_SERVER['HTTP_REFERER']); 
$url = explode('/',$url['path']); 
if ($url[1]=='index.html'||empty($url[1])) echo 'from index '; 
0
$referer = $_SERVER['HTTP_REFERER']; 
$homepage = "index.php"; 
$ref_array = explode("/", $referer); 
if(trim($ref_array[1]) == trim($homepage) || trim($ref_array[1]) == "") echo "From URL"; 

당신은 그 yoursite.com/index.php에주의해야하며, yoursite.com/은 동일합니다!

1

사용이

if($_SERVER["REQUEST_URI"] == "/" || $_SERVER["REQUEST_URI"] == "/index.php") 
    echo "Home"; 
0

이 작동합니다 : 그것은 그런 식으로 작동하는지

if ($_SERVER['REQUEST_URI'] == '/')

관련 문제