Хранить куки, если сервер реферер является конкретным веб-сайтом - PHP - PullRequest
0 голосов
/ 28 февраля 2012

Я бы хотел перенаправить пользователя на «страницу оповещения», если он заходит на мой новый сайт с моего старого сайта. Однако только в одном случае. Каждый раз после этого они беспрепятственно переходят на мой новый сайт.

Вот мой текущий код для определения старого сайта в качестве реферера и перенаправления:

<?php

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

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

}

?>

Большое спасибо за любые указатели с этим.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Это сделает это.

$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 следует использовать и его хорошая практика
  • Такие куки должны быть установлены на длительное время (1 год. 20 год тоже нормально). Потому что вы не хотите снова показывать это предупреждение пользователю.
2 голосов
/ 28 февраля 2012

Ваши вопросы странные, потому что они содержат ответ!

Вы уже определили логику своего кода: вы хотите показать сообщение и добавить куки-файл пользователю, если он пришел с определенного веб-сайта (старыйваш) и не имеет 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");
}
...