Создаем скрипт показа баннеров на PHP4

Discussion in 'PHP' started by TreV@N, 9 Feb 2009.

  1. TreV@N

    TreV@N Elder - Старейшина

    Joined:
    14 Jul 2008
    Messages:
    135
    Likes Received:
    48
    Reputations:
    19
    Скрипт показ баннеров, изложенный в этой статье довольно элементарен. Описания баннеров, количество кликов и показов хранится в текстовом файле, поэтому наличия 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
     
    1 person likes this.
  2. blednii

    blednii Elder - Старейшина

    Joined:
    12 Jun 2007
    Messages:
    160
    Likes Received:
    23
    Reputations:
    -7
    А копипаст зачем? Может лучше выложить модернизированное с кукисами?