Forum Webscript.Ru

Программирование => Perl => Тема начата: C++ от 26 Июня 2003, 00:50:07

Название: Банероменялка
Отправлено: C++ от 26 Июня 2003, 00:50:07
Допустим на страничке есть два банера в IFRAME-е, адреса обоих выдаются скриптом. Для каждого посетителя банеры выбираются случайным образом из БД и в куки ему пишутся какие банеры он уже посмотрел. Какова  вероятность того, что на одной странице ему покажется два одинаковых банера если не брать во внимание, то что банеры выбираются случайно? Как этого избежать не прибегая к тому, чтобы писать IP каждого посетителя в базу с показанными ему банерами?
Название: Банероменялка
Отправлено: Wyclef от 26 Июня 2003, 09:07:59
Цитировать
Какова вероятность

Чем больше баннеров - тем меньше вероятность ;)
Название: Банероменялка
Отправлено: Yaroslav от 26 Июня 2003, 14:44:51
я бы сделал так
if ($baner1} eq "$baner2")  {  .....  }
else {  .....   }

$baner1 - названия файла в которой лежит код банера :)
Название: Банероменялка
Отправлено: C++ от 26 Июня 2003, 15:15:08
Yaroslav
Каким методо м делать это не проблема.

Проблема в том, что если на страничке показывается больше одного банера, то есть вероятность, что при обращениях к скрипту будут одинаковые куки, т.е. при первом обращении скрипт еще не поставил новые куки, а произошло уже второе обращение. Таким образом у них будут одинаковые куки и если брать баннер не случайно а по порядку из списка, то они будут одинаковы, а это никак не желательно.
Вот как этого избежать?
Название: Банероменялка
Отправлено: Wyclef от 26 Июня 2003, 15:23:28
Может хранить данные для юзера в файле, залочиваешь его пока не показался первый баннер, а второй будет ждать пока файл не освободится... Юзера вычислять по IP. При нормальной огрганизации должно работать довольно быстро...
Название: Банероменялка
Отправлено: Yaroslav от 26 Июня 2003, 16:55:11
Цитировать
C++:
что при обращениях к скрипту будут одинаковые куки

=
Цитировать
C++:
т.е. при первом обращении скрипт еще не поставил новые куки, а произошло уже второе обращение

if ($baner1} eq "$baner2") { ..... }
else { отправил кук }
итог - куки разные

вообще-то я с куками никак не знаком (где-то отдаленно о них слышал),  так что прошу на меня не серчать если что не так, я хотел от чистого сердца, а вышло как всегда (наверно) но - читай подпись. :)
Название: Банероменялка
Отправлено: C++ от 26 Июня 2003, 17:23:29
Yaroslav
Я понял о чем ты. Такая проверка не прокатит, т.к. я не знаю какой я банер выбрал последним.
Wyclef
Можно так сделать, я об этом думал, но не хотелось бы....

Есть у кого другие идеи?
Название: Банероменялка
Отправлено: Alone от 26 Июня 2003, 19:55:21
ну например
у тебя 10 баннеров
во фрейме вызывается скрипт с параметром  0,1 или 2
если 0 ты рандомно берется из 10 баннеров
если 1 рандомно из баннеров с 1-5
если 2 рандомно с 6-10
хотя конечно выход тот еще

другой вариант на сесиях, и хранить в сесии баннеры каторые были просмотренны пользователем
Название: Банероменялка
Отправлено: C++ от 26 Июня 2003, 20:45:44
Alone
Ну так я вроде и собираюсь делать на с использованием сессий... Каждый раз писать в куки показанные банеры.
Проблема в том, что после первого вызова скрипта куки не успеют обновиться и во втором будут такимиже что и в первом вызове...
Название: Банероменялка
Отправлено: Yaroslav от 26 Июня 2003, 22:29:16
Цитировать
C++:
т.к. я не знаю какой я банер выбрал последним.

что то я тебя реально понять не могу, давай еще раз по порядку:
есть 2 места под банеры и скажем всего 5 банеров (1.gif, 2gif, 3.gif, 4.gif, 5.gif)

выбираем 1банер (как это ты уже сам знаешь), далее присвой этому банеру что то типа этого ($место1=1.gif(то что выбрал))
отправил кук
выбираем 2банер (как это ты уже сам знаешь), далее присвой этому банеру что то типа этого ($место2=3.gif(то что выбрал))
if ("$место1" eq "$место2") { выбирай заново; }
else { показал банер; отправил кук; }

где я не то понял?
Название: Банероменялка
Отправлено: C++ от 27 Июня 2003, 01:10:33
Yaroslav
Страница не генерится скриптом! Читай выше.;)
Сама страница статическая в ней есть конструкции типа