使用php检测用户来自哪里

时间:2014-02-19 04:47:06

标签: php

我在members.php上有这段代码

<?php
if (!isset($_SERVER['HTTP_REFERER'])){
header( 'Location: http://www.mywebsite.com/index.php' ) ; }

else {  
echo "Ok";
}

我试图避免人们访问我的members.php而不被我的域重定向 但是,如果用户点击来自Facebook的链接,例如......他可以访问members.php

如何让HTTP_REFERER检查他是否被mywebsite.com重定向?!

这样我就可以通过输入网址来尝试直接访问。 但它没有检查它的来源。

2 个答案:

答案 0 :(得分:2)

我认为您可以使用preg_match()来匹配用户是否从Facebook重定向到

     <?php
    if(preg_match('#https?\://(?:www\.)?facebook\.com#',$_SERVER['HTTP_REFERER'])){

    // facebook refered user

    }
    else{

    // else part
    }
    ?>

答案 1 :(得分:0)

$_SERVER['HTTP_REFERER']没有任何价值的原因和情况很多。

你可以“尝试”使用它,如果你有价值,那就不好用它来做某事。

但是考虑到它是空的或不准确的可能性,如果它是空的,你不应该像重定向那样做一些硬化。

即。您可以在404未找到的页面上使用它来尝试以查看用户来自何处,并从那里尝试以查看他们可能尝试去/来自哪里,并为他们提供他们可能认为有用的网站上的一些链接。

但是,除了一些潜在有用的信息之外,根本不要相信它,这些信息很容易变得不准确并且(很可能)是空的。

编辑:
阅读您的评论,我发现您试图使用它来阻止访问成员区域 这是一种非常糟糕的方法,因为它在管理对成员区域的访问方面没有告诉您任何价值。

我甚至不确定为什么您认为来自您网站的其他网页的人应该保证他们可以访问“会员区”。
当然,从以下方面来看,没有真正的区别(就“会员”而言):1)从外部网站到您的会员区域,而不是2)从您的网站上的外部网站到某些页面然后是会员区域?

你将不得不学习使用$ _SESSIONS,如果会员区是一个安全区域,那么你也需要一个注册和登录系统。
这取决于你真正想要保护的东西。然而,现在这不属于这个问题的范围。

如果您在Stack上搜索登录系统和$ _SESSION,您将能够获得一些信息。