如果Server Referrer是特定网站,则存储Cookie - PHP

时间:2012-02-28 09:31:10

标签: php session cookies http-headers referrer

我想将用户重定向到“提醒页面”,如果他们来到我的新网站 我的旧网站。 然而,只有一次。之后每隔一段时间他们就会不受阻碍地继续我的新网站。

这是我当前用于检测旧网站作为引用并重定向的代码:

<?php

if (false !== stripos($_SERVER['HTTP_REFERER'], "www.myoldsite.com")){

    header ("Location: /alert.html");

}

?>

非常感谢您提出的任何指示。

2 个答案:

答案 0 :(得分:2)

你的问题很奇怪,因为它包含答案!

您已经定义了代码的逻辑:如果用户来自特定网站(旧的)并且没有cookie,您希望显示消息并向用户添加cookie。

这是逻辑:

if (user referer url = "your old website" AND cookie_remember is null) then
    add cookie "cookie_remember"
    show a message (in that case, redirect to a specific page)
end if

对于您的代码,您刚刚错过了Cookie部分

if (false !== stripos($_SERVER['HTTP_REFERER'], "www.myoldsite.com") && !isset ($_CCOKIE['alerted']){
    set_cookie('alerted', true);
    header ("Location: /alert.html");
}

答案 1 :(得分:2)

这样就可以了。

$cond =    isset($_SERVER['HTTP_REFERER'])
        && false !== stripos($_SERVER['HTTP_REFERER'], "www.myoldsite.com")
        && (   !isset($_COOKIE['alert_shown'])
            || ($_COOKIE['alert_shown']!=1)
           );

if ($cond){
    // set the cookie for 1 year.
    setcookie('alert_shown', 1, time()+3600*24*365, '/', "www.mycurrentsite.com");
    header ("Location: /showalert.html");
}

需要注意的要点。

    应该使用
  • isset及其良好做法
  • 此类cookie应设置较长时间(1年.20年也可以)。因为您不想再向用户显示此警报。