Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Создаем скрипт показа баннеров на PHP4 (https://forum.antichat.xyz/showthread.php?t=105390)

TreV@N 09.02.2009 09:16

Создаем скрипт показа баннеров на 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...

Сначала надо загрузить файл, в котором хранится описание баннеров:

PHP код:

<?
$array_bann 
file ('database.txt');

Потом - инициализируем генератор псевдослучайных чисел, выбираем случайную запись из считанного файла, разделяем ее на элементы через признак "|" и заносим их в массив $data_bann.

PHP код:

srand((double)microtime()*1000000);
$pos rand(0,sizeof($array_bann)-1);
$data_bann=explode ("|"$array_bann[$pos]); 

Далее выводим на экран собственно сам баннер на основе данных из массива $data_bann;

PHP код:

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>"

Увеличиваем счетчик показов баннера на единицу.

PHP код:

$data_bann[4]++; 

Склеиваем измененную запись и записываем весь массив в файл;

PHP код:

$array_bann[$pos]=join('|',$data_bann);
$fpfopen ('database.txt',"w");
flock($fp,3);
fwrite ($fpjoin('',$array_bann));
fclose ($fp);
?> 

Теперь займемся файлом banner_click.php. Открываем файл с данными.

PHP код:

<?
$array_bann 
file ('database.txt');

В переменной $banner - у нас уже переданный из html-файла номер баннера, по которому кликнули. Берем запись, соответствующую этому номеру, опять разделяем ее на кусочки через "|" и заносим это в массив $data_bann.

PHP код:

$data_bann=explode ("|"$array_bann[$banner]); 

Увеличиваем счетчик показов на единицу, склеиваем запись обратно в $array_bann.

PHP код:

$data_bann[5]=$data_bann[5]+1;
$array_bann[$banner]=join('|',$data_bann)."n"

И записываем изменненный массив в файл database.txt.

PHP код:

$fpfopen ('database.txt',"w");
flock($fp,3);
fwrite ($fpjoin('',$array_bann));
fclose ($fp); 

Отфутболиваем пользователя по адресу, хранящемуся в переменной $data_bann[0];

PHP код:

header("Location: http://$data_bann[0]");
?> 

В заключение хочется добавить, что от накрутки кликов можно некоторым образом защитится, используя запись кукисов в одном скрипте и считывание их в другом.

Первоисточник: www.r-i-p.info

Автор статьи: Pricol

blednii 09.02.2009 21:49

А копипаст зачем? Может лучше выложить модернизированное с кукисами?


Время: 22:17