[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ротация баннеров с помощью кукисов/сессии
Balian
Всем добрый день! У меня возникло желание сделать ротацию баннеров в правильной последовательности, т.е. друг за другом. А не с помощью рендомных значений, когда частенько повторяется один и тот же баннер. Нашел на вашем форуме полезную тему - вот она, которая подсказала мне, что можно это осуществить с помощью кукисов или сессии. Но возникла следующая проблема, по какой то причине, что кукисы, что сессии записываются по 2 раза. Сначало я решил попробовать сделать так же как в той теме на которую я ссылку выше указал:

if(isset($_COOKIE['banner_top']))
{
$banner_top_num = $_COOKIE['banner_top'];
if($banner_top_num + 1 < $max)
{
$banner_top_num += 1;
set_cookie('banner_top', $banner_top_num);
}
else
{
$banner_top_num = 0;
set_cookie('banner_top', $banner_top_num);
}
}

else
{
$banner_top_num = 0;
set_cookie('banner_top', $banner_top_num, 30); // на 30 дней
}
}

// далее выводится нужный баннер (когда обновляю страницу на сайте или перехожу на другую код выполняется заново

С помощью просмотра кукисов в браузере и echo я понял, что запись в кукис происходит дважды (с сессией тоже самое). Хотя скрипт запускается один раз, echo говорит, что вход был тоже один раз, даже DLE функция set_cookie (вставил туда echo) тоже говорит. Что он запустился один раз. Но тем не менее смотря куки я вижу, что при первом открытии сайта вместо того, чтобы в нем был записан 0, в нем стоит 1. То есть как я понимаю происходит следующее: после того как было определено, что данного кукиса нету, в него записывается 0. Затем считывается выше - "$banner_top_num = $_COOKIE['banner_top']" и записывается 1. В общем странно все это, пробовал по разному и чтобы всего лишь один вызов set_cookie был. Результат тот же и с сессиями тоже самое. Попробовал еще такой вариант:

$bans = show_banner($max, $min, "ban_top");

function show_banner($max,$min,$name)
{
$b = $min;

while($b < $max)
{
$banner = "$name".$b;

if(isset($_COOKIE[$banner]))
{
$b++;
}
else
{
set_cookie($banner, $b, 1);
break;
}
}

return $b;
}

// затем хотел вставить проверку если все кукисы созданы и вернувшееся значение больше чем $max, то я удаляю куки и запускаю снова функцию

Но при такой функции происходит тоже, что и выше я описал. Открываю один раз страницу, код выполняется один раз, в функцию заходит тоже один раз. Но в кукисы вместо одного кука, записало два. С сессиями тоже самое.

Надеюсь на вашу помощь. Заранее спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.