JS: Как сделать редирект раз в 24 часа (с куками)?
Новая тема Написать ответ
# Чт Dec 13, 2012 10:48 amYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Всем привет!
Есть страница, на ней стоит JS-код. При первом заходе она записывает куки на 24 часа и редиректит на целевую страницу.
Если юзер заходит в эти 24 часа, то редирект не будет срабатывать.
Через 24 часа куки станет expired и вновь сработает запись новой куки и редик.

Есть такой код (взял с блога Codd'а) Cool и чуть переделал:
Код:
123

<script type="text/javascript">
/* Параметры **********/
var url = 'http://codd.ws/'; // сайт, открывающийся в новом окне
var time = 24; // время, на которое устанавливается кука

function getCookie(super) {
   var cookie = " " + document.cookie;
   var search = " " + super + "=";
   var setStr = null;
   var offset = 0;
   var end = 0;
   if (cookie.length > 0) {
      offset = cookie.indexOf(search);
      if (offset != -1) {
         offset += search.length;
         end = cookie.indexOf(";", offset)
         if (end == -1) {
            end = cookie.length;
         }
         setStr = unescape(cookie.substring(offset, end));
      }
   }
   return(setStr);
}

var D = new Date();
D.setHours( D.getHours()+time );
var expires = D.toUTCString();

window.onload = function() { 
   if( getCookie('super') !== 'true' ){
      window.cookie='super=true; path=/; expires=' +expires;
      window.location.href=''+url;     
   }
}
</script>



Кто понимает в JS, пожалуйста подскажите, где здесь ошибка, т.к. сейчас скрипт не записывает куки для домена и всегда редиректит.

Заранее большое спасибо! Drinks or Beer
# Чт Dec 13, 2012 12:57 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Решил вопрос при помощи своего любимого PHP, изучив функции установки и считывания куки.
Может кому тоже пригодится, скрипт для редиректа раз в сутки, устанавливать ВВЕРХУ страницы, ДО всего остального кода (я полчаса мучался, пока не узнал, что нужно установку кук задавать до остального кода r5 ):
Код:
<?php

// Редирект раз в сутки

// Ищем установленную куку
if(!$_COOKIE['prefcookie'] == "prefcookie1") {
   // Устанавливаем куку
   setcookie("prefcookie", "prefcookie1", time()+60*60*24);     // Установка куки на 24 часа (60*60*24)
   // Редиректим
   header("Location: http://google.com/");
}
?>


Drinks or Beer
# Чт Dec 13, 2012 3:58 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
И этот же редирект с клоакой по рефереру (гуглу отдаем с кукой и редиком, остальным обычный сайт):

Код:
<?php

// Редирект раз в сутки для тех, у кого реферер "google"

// Ищем целевой реферер
$original_referer = $_SERVER['HTTP_REFERER'];
 
// искомый текст
$referer='google';

// Ищем нужный маркер в реферере
$pos = strpos($original_referer, $referer);

if ($pos) {
   // Ищем установленную куку
   if(!$_COOKIE['prefcookie'] == "prefcookie1") {
      // Устанавливаем куку
      setcookie("prefcookie", "prefcookie1", time()+60*60*24);     // Ставим куку на 24 часа
      // Редиректим
      header("Location: http://google.com/");
   }
}

?>

Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.