Создаем скрипт показа баннеров на PHP4
Скрипт показ баннеров, изложенный в этой статье
довольно элементарен. Описания баннеров, количество кликов и показов
хранится в текстовом файле, поэтому наличия 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єnner_click.php?banner=$pos target=_blank>";
echo "<IMG SRC='$data_bann[1]'";
echo "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]");
?>
В заключение хочется добавить, что от
накрутки кликов можно некоторым образом защитится, используя запись
кукисов в одном скрипте и считывание их в другом.
Источник: www.r-i-p.info
|