基于 IP 和引荐来源的 PHP 重定向

Posted

技术标签:

【中文标题】基于 IP 和引荐来源的 PHP 重定向【英文标题】:PHP redirect based on IP AND referrer 【发布时间】:2011-08-31 06:27:16 【问题描述】:

我正在尝试根据他们的 IP 和空白引荐来源将我网络中的用户重定向到我们网站上的特定登录页面。此代码有效,但最终进入重定向循环。如何跳出重定向循环以正确重定向用户?谢谢!

$visitor = $_SERVER['HTTP_REFERER'];
$clientip = $_SERVER['REMOTE_ADDR'];
$ip = a regex list of IPs;
if (empty($visitor))

    if (preg_match($ip, $clientip)) 
        header('Location: http://example.com');
            die();
             

【问题讨论】:

refer 是可选的标头。假设它是空的意味着这是他们在会话期间第一次访问该站点,这是一个非常糟糕的主意。 Quentin 所说的 - 另请注意,一些代理和“安全套件”将删除此标头,无论用户是否想要它们(因此并不总是“好吧,用户需要重新-然后启用它”)。 【参考方案1】:

向该用户添加一个您知道他们已被重定向的会话:

session_start();
$visitor = $_SERVER['HTTP_REFERER'];
$clientip = $_SERVER['REMOTE_ADDR'];
$ip = a regex list of IPs;
if (empty($visitor))


    //add on if they did not redirect yet.
    if (preg_match($ip, $clientip) && 
        (!isset($_SESSION['redirect']) || !$_SESSION['redirect'])) 
        $_SESSION['redirect'] = true;
        header('Location: http://example.com');
        die();
     


【讨论】:

很好奇。为什么要为此创建服务器端文件?一个简单的 cookie 还不够吗? @webbiedave 可以吃,会话不能那么容易 完美。这正是我所需要的。非常感谢!

以上是关于基于 IP 和引荐来源的 PHP 重定向的主要内容,如果未能解决你的问题,请参考以下文章

实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址

强制 Shibboleth 在身份验证后重定向到特定 URL

MVC 3 - 基于国家的重定向?

跨域重定向跟踪流量来源

在javascript中获取引荐网址

如何在 playframework 中获取引荐来源网址