PHP ротатор баннеров

Статус
Закрыто для дальнейших ответов.

Felix

Друг форума
Регистрация
20.06.2009
Сообщения
1 097
Такссс, всем здрасте!
Сразу к делу,
Есть скрипт PHP ротатора рекламы, выгладит так.
Код:
<?php

$banners = array ();

// Список ваших баннеров
$banners[] = '<a href="http://www.site-1.ru/">site-1.ru</a>';
$banners[] = '<a href="http://www.site-2.ru/">site-2.ru</a>';
$banners[] = '<a href="http://www.site-3.ru/">site-3.ru</a>';

...

$banners[] = '<a href="http://www.site-N.ru/">site-N.ru</a>';

echo $banners[array_rand ($banners)];

?>
Баннера появляются в случайном порядке, как сделать так чтобы они появлялись не случайно, а по очереди, которую можно задавать.

ну сначала первый, потом второй, третий снова первый и по кругу.

Сам нашёл ответ :)

Вот такой вариант самый простой.

Код:
<?php
session_start();
$massive[]=""; //здесь между кавычками " и " вписываем код нашей рекламы
$massive[]=""; //аналогично
$massive[]=""; //аналогично
$massive[]=""; //аналогично
$massive[]=""; //аналогично
$massive[]=""; // если останутся лишние строки $massive[]=""; - стираем их , если не хватает, то добавляем
$nomer=count($massive);
if(!isset($_SESSION['nomer'])){
$_SESSION['nomer']=0;
}
else
{
if($_SESSION['nomer'] $_SESSION['nomer']++;
}else{
$_SESSION['nomer']=0;
}
}
echo $massive[$_SESSION['nomer']];
?>
Creator предлагал на основе кукков, но на основе сессий будет надёжней, сказал он же :)



Хммм но мой скрипт последний почему то не работает. Кто может сказать почему ?
 

Serg@NT

Well-Known Member
Регистрация
20.02.2010
Сообщения
506
По очереди появлялись для каждого пользователя или для всех? Для каждого пользователя - хранить в сессии счётчик просто.

Для всех сложнее немного. Я видел реализацию этого в ASP через переменные приложения (массив Application). Если честно, не знаю, что в PHP является аналогом этого. Может, массив $_ENV?
Смысл - записываешь все баннеры с переменными, отвечающими за порядок появления и счётчик в переменные приложения, а потом выдаёшь. То же самое, что в БД, только быстрее.
 

Felix

Друг форума
Регистрация
20.06.2009
Сообщения
1 097
для каждого пользователя, баннера должны показываться по порядку.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Насколько я понял, когда конкретный пользователь посещает сайт, каждый раз ему должен быть показан новый баннер, причем по порядку. По моему, проще всего для хранения индекса баннера использовать куки:
Если есть кука:
- читаем куку index
- увеличиваем на 1
- записываем в куку новое значение
Если нет куки:
- записываем куку index = 0
Показываем баннер[index]

Только нужно установить побольше время жизни куки!

Вариант из поста №1 не работает, потому что при закрытии сайта сессия разрушается и вся информация теряется. Тоже будет и с куками при закрытии браузера, если не удлинить им время жизни.
 

Felix

Друг форума
Регистрация
20.06.2009
Сообщения
1 097
А если куки отключены то будет косячок :)
По этому в плане сессий надёжней, но что то код не работает:( Где то ошибка есть.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
А если еще скрипты отключить, то в большинстве сайтов вообще навигации не будет.

Хммм но мой скрипт последний почему то не работает. Кто может сказать почему ?
Вариант из поста №1 не работает, потому что при закрытии сайта сессия разрушается и вся информация теряется.
Самое надежное - использовать БД (а при ее отсутствии - файлогеморрой).
 

Felix

Друг форума
Регистрация
20.06.2009
Сообщения
1 097
Вариант из поста №1 не работает, потому что при закрытии сайта сессия разрушается и вся информация теряется.
Ну и ладно, главное что пользователь когда зашёл на сайт первый раз, пока он находится на моём сайте он будет видеть разные баннера, после того как он заходит на сайт снова то он будет видеть снова те же баннера по кругу.
баннеров будет не много всего 3 штуки.
То есть мне нужно чтобы юзер видел по 3 баннера, вертеться они будут по кругу, чтобы не было так что он просмотрел 4 станицы и один баннер выпадал все 4 раза.

Код:
Parse error: syntax error, unexpected T_STRING in /index.php(265) : eval()'d code on line 77
Вот такая вот ошибка

Кто может помочь ?
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
А сам ротатор отдельно работает? Если да -- то возможно даже дело в кавычках, как и в этом случае.
 

minority

generator randomly php
Регистрация
02.05.2010
Сообщения
443
Код:
<?php
session_start();
$massive[]=""; //здесь между кавычками " и " вписываем код нашей рекламы
$massive[]=""; //аналогично
$massive[]=""; //аналогично
$massive[]=""; //аналогично
$massive[]=""; //аналогично
$massive[]=""; // если останутся лишние строки $massive[]=""; - стираем их , если не хватает, то добавляем
$nomer=count($massive);
if(!isset($_SESSION['nomer']))
{
$_SESSION['nomer']=0;
}
else
{
if($_SESSION['nomer'] && $_SESSION['nomer'] !== $nomer) 
$_SESSION['nomer']++;
else
{

$_SESSION['nomer']=0;
}
}
echo $massive[$_SESSION['nomer']];
?>
Не проверял и писал не в редакторе проверти.
 

mrPsyx

Well-Known Member
Регистрация
27.09.2009
Сообщения
375
мне лично нравится php писать с базамаи, таким образам можно легхо решыть эту задачу...!!! )
 
Статус
Закрыто для дальнейших ответов.
Верх Низ