PHP检查推荐网址是否为主页

时间:2012-01-04 11:31:01

标签: php http-referer

我正在试图弄清楚如何检查我的某个内页的引荐网址是否是主页。如果主页总是www.mysite.com/index.php,这很容易,但当它只是www.mysite.com时会发生什么?

我知道我可以做到

$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。

5 个答案:

答案 0 :(得分: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 :(得分:1)

使用此

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

答案 2 :(得分:0)

$url = parse_url($_SERVER['HTTP_REFERER']);
$url = explode('/',$url['path']);
if ($url[1]=='index.html'||empty($url[1])) echo 'from index ';

答案 3 :(得分: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/是一样的!

答案 4 :(得分:0)

这样可行:

  

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