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, то я удаляю куки и запускаю снова функцию
Но при такой функции происходит тоже, что и выше я описал. Открываю один раз страницу, код выполняется один раз, в функцию заходит тоже один раз. Но в кукисы вместо одного кука, записало два. С сессиями тоже самое.
Надеюсь на вашу помощь. Заранее спасибо.