2012-01-04 106 views
2

我想弄清楚如何檢查引薦網址是否是我的內頁之一是首頁。如果主頁總是www.mysite.com/index.php,那麼這很容易,但是當它僅僅是www.mysite.com時會發生什麼?PHP檢查引薦網址是首頁

我知道我可以簡單地做

$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 2012-01-04 11:35:09

+0

@Walkerneo如果Web服務器被配置爲將index.php作爲默認頁面,那麼它很容易就可以成爲www.mysite.com/。 – DaveRandom 2012-01-04 11:37:15

+0

沒錯,這是我的問題,index.php不存在於我的主頁網址中。 – bikey77 2012-01-04 11:39:34

回答

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 2012-01-04 11:37:29

+0

Riiiiiiight ..... – mowwwalker 2012-01-04 11:39:17

+0

@Hossein ...我雖然*我*在輸入時是垃圾... :-P – DaveRandom 2012-01-04 11:39:18

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'] == '/')