Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод не повторяющихся баннеров
 
 автор: mihdan   (07.02.2011 в 15:29)   письмо автору
 
 

Код вызова баннера:


<script type="text/javascript">
document.write("<sc"+"ript src='путь_до_РНР_файла?r1="+(Math.round(Math.random()*4294967295))+"'></sc"+"ript>");


Скрипт показа баннеров:


<?php
$r1 
$_GET['r1'];
srand($r1);
// получим баннеры из базы в массив
// выводим баннер
?>
document.write(тело баннера);


Для вывода 6-ти баннеров 6 раз копируется первый код вызова в цикле for.
Как сделать вывод не повторяющихся баннеров?

  Ответить  
 
 автор: cheops   (07.02.2011 в 15:35)   письмо автору
 
   для: mihdan   (07.02.2011 в 15:29)
 

А что-то цикла for не видно... в нем используется какой-нибудь массив (если нет, то разумно в нем его создать)? Как правило, в этом случае, когда нужны не повторяющиеся баннеры, массив перемешивается при помощи функции shuffle(), после чего берутся первые шесть элементов массива.

  Ответить  
 
 автор: mihdan   (07.02.2011 в 17:17)   письмо автору
 
   для: cheops   (07.02.2011 в 15:35)
 

Для 6ти баннеров так:

<script type="text/javascript"> 
for(var i=0; i< 6; i++) {
    document.write("<sc"+"ript src='путь_до_РНР_файла?r1="+(Math.round(Math.random()*4294967295))+"'></sc"+"ript>"); 
}
</script>

  Ответить  
 
 автор: Саня   (07.02.2011 в 17:32)   письмо автору
 
   для: mihdan   (07.02.2011 в 17:17)
 

Ну так пусть скрипт "путь_до_РНР_файла" и рулит всем. В чём проблема я так и не понял. Пусть этот скрипт посылает кукисы с просмотренными баннерами.

  Ответить  
 
 автор: mihdan   (08.02.2011 в 02:27)   письмо автору
 
   для: Саня   (07.02.2011 в 17:32)
 

"путь_до_РНР_файла" - физически на другой серверной площадке!!! Про кукисы можно забыть (не везде работает), код вызова баннера менять нельзя, но можно добавить :) А вот "путь_до_РНР_файла" с этим файлом можно делать все, что угодно.

  Ответить  
 
 автор: cheops   (07.02.2011 в 17:41)   письмо автору
 
   для: mihdan   (07.02.2011 в 17:17)
 

Кстати, да, может перенести этот цикл в скрипт "путь_до_РНР_файла", а здесь его включать при помощи include()?

  Ответить  
 
 автор: mihdan   (07.02.2011 в 20:21)   письмо автору
 
   для: cheops   (07.02.2011 в 17:41)
 

путь_до_РНР_файла - находится на другом сервере

  Ответить  
 
 автор: cheops   (07.02.2011 в 20:45)   письмо автору
 
   для: mihdan   (07.02.2011 в 20:21)
 

Тогда плохо дело... Я так понимаю, параметр r1 никакой смысловой нагрузки не несет и влияет только на случайный выбор?

  Ответить  
 
 автор: mihdan   (07.02.2011 в 21:58)   письмо автору
 
   для: cheops   (07.02.2011 в 20:45)
 

Да

  Ответить  
 
 автор: kobzarev   (19.10.2011 в 02:24)   письмо автору
 
   для: cheops   (07.02.2011 в 20:45)
 

Теперь скрипты сайта и скрипты показа баннеров лежат на одном сервер по одному доменному имени. Пытался отправить куки из скрипта показа баннеров, но как-то браузеры непонятно себя ведут:

Если обратиться напрямую по url - все работает (пример), если же этот url вызывается из тега script - кукисы не прокатывают (пример, строка 552 исходного кода)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования