div.main {margin-left: 20pt; margin-right: 20pt}Скрипт показа баннеров на
PHP4 R.Ambersky
Скрипты показа баннеров, изложенные в этой статье довольно
элементарны. Описания баннеров, количество кликов и показов хранится
в текстовом файле, поэтому наличия MySQL не требуется.
Для начала создадим файл, в котором будем хранить всю информацию.
Назовем его database.txt. Файл будет содержать записи следующего
формата: URL1|IMG1|NAME1|WH1|SHOW1|CL1 URL2|IMG2|NAME2|WH2|SHOW2|CL2 ...
Где эти мистические слова означают следующее: URL - ссылка
баннера, куда будет переходить пользователь по клику; IMG - имя
файла изображения, которое будет выводится на экран; NAME -
alt-текст изображения; WH - строка вида WIDTH=XX HEIGHT=XX,
ширина и высота изображения; если все изображения одного размера,
соответственно можно упростить скрипт; SHOW - показы баннера,
пишем изначально 0; CL - клики по баннеру, пишем тоже
0; Разделим логику на два файла. Один файл будет отвечать за
показ баннера, назовем его banner_show.php, другой - за учет кликов
по баннеру, назовем его banner_click.php. Пишем
baner_show... Сначала надо загрузить файл, в котором хранится
описание баннеров: <? $array_bann = file
('database.txt'); Потом - инициализируем генератор
псевдослучайных чисел, выбираем случайную запись из считанного
файла, разделяем ее на элементы через признак "|" и заносим их в
массив $data_bann. srand((double)microtime()*1000000); $pos =
rand(0,sizeof($array_bann)-1); $data_bann=explode ("|",
$array_bann[$pos]); Далее выводим на экран собственно сам баннер
на основе данных из массива $data_bann; echo "<a
href=banner_click.php?banner=$pos target=_blank><IMG
SRC='$data_bann[1]' ALT='$data_bann[2]' $data_bann[3]
border=0></a>"; Увеличиваем счетчик показов баннера на
единицу. $data_bann[4]++; Склеиваем измененную запись и
записываем весь массив в
файл; $array_bann[$pos]=join('|',$data_bann); $fp= fopen
('database.txt',"w"); flock($fp,3); fwrite ($fp,
join('',$array_bann)); fclose ($fp); ?> Теперь займемся
файлом banner_click.php. Открываем файл с
данными. <? $array_bann = file ('database.txt'); В
переменной $banner - у нас уже переданный из html-файла номер
баннера, по которому кликнули. Берем запись, соответствующую этому
номеру, опять разделяем ее на кусочки через "|" и заносим это в
массив $data_bann. $data_bann=explode ("|",
$array_bann[$banner]); Увеличиваем счетчик показов на единицу,
склеиваем запись обратно в
$array_bann. $data_bann[5]=$data_bann[5]+1; $array_bann[$banner]=join('|',$data_bann)."n"; И
записываем изменненный массив в файл database.txt. $fp= fopen
('database.txt',"w"); flock($fp,3); fwrite ($fp,
join('',$array_bann)); fclose ($fp); Отфутболиваем
пользователя по адресу, хранящемуся в переменной
$data_bann[0]; header("Location:
http://$data_bann[0]"); ?> В заключение хочется добавить,
что от накрутки кликов можно некоторым образом защититься, используя
запись cookie в одном скрипте и считывание их в другом.
|