2012-01-04 84 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'] == '/')