Главная » Полезные статьи » Язык PHP » Простая баннерная система phpFBS
Распечатать статью

Простая баннерная система phpFBS

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

Введение

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

Что в нашем случае значит <управлять баннерными местами>? Что нам нужно от баннерной системы? Перечислим необходимые функции:

1. Централизованное хранение баннеров и информации о них.
2. Загрузка баннера на сайт через веб-интерфейс.
3. Установка направляющей ссылки.
4. Добавление новых записей о баннерах.
5. Удаление записей о баннерах.
6. Просмотр кода и тестирование баннера.

Все эти функции выполняет простая, на мой взгляд, баннерная система phpFBS (FoxWeb Banner System), написанная на языке PHP с базой MySQL за 4 часа.
Описание баннерной системы

Система состоит из трёх PHP-скриптов:

1. adm.php — панель администрирования баннеров.
2. conf.php — подключения к базе и настройки.
3. i.php — для двух функций: показ и переход баннера.

В директории <b> по умолчанию будут храниться и загружаться файлы-картинки, то есть сами баннеры. Естественно, на неё должны быть установлены права chmod 777 для возможности загрузок.

ВНИМАНИЕ! Не рекомендуется использовать в именах скриптов и директорий слово banner или аналогичные слова, в таком случае данные, пересылаемые пользователю автоматически <обрезаются> прокси-серверами и файрволами. При тестировании баннерной системы у моего заказчика именно это и случилось :)

Начнём с простого — подключение к БД MySQL. Это осуществляет скрипт conf.php. Установите в нём необходимые учётные данные MySQL-соединения. Он вынесен отдельно, потому что подключение необходимо для <админской> и для <выводной> частей. В базе данных нам понадобится всего одна таблица banners следующей структуры:

CREATE TABLE `banners` ( `banner_id` tinyint(1) unsigned NOT NULL auto_increment, `bannername` varchar(50) default NULL, `filename` varchar(50) default NULL, `url` varchar(50) default NULL, `comment` varchar(50) default NULL, PRIMARY KEY (`banner_id`) ) ENGINE=MyISAM;

Сразу хочу обрадовать сторонников файлового способа хранения записей — вы вольны придумывать свои функции, но с БД эта система получилась предельно простой. А если вам будущем понадобится 100 и более записей — тут конечно БД несомненно выигрывает.

conf.php

<?php mysql_connect("localhost", "db_user", "db_pass"); mysql_select_db ("db_name"); ?>

Перейдём к скрипту вывода и перенаправления. Ему передаётся два параметра: action (действие) и id (номер баннера в таблице). Первым делом скрипт подключается к базе и выполняет запрос на запись id, чтобы узнать путь к файлу баннера и ссылка, на которую он ведёт. Вообще говоря, в обоих случаях выполняется перенаправление:

* i.php?action=redirect&id=1 — выполняется перенаправление на адрес баннера, указанный в базе в поле url. Это привычное всем действие при клике на баннере мышью.
* i.php?id=1 — выполняется перенаправление на файл баннера, указанный в базе в поле filename. Фактически баннер выводится в окне браузера, как будто мы запросили его напрямую (но посредством переадресации от i.php). Ну, в общем вы поняли :)

i.php

<?php include "conf.php"; $query = "SELECT * FROM banners WHERE banner_id=$id"; $f = mysql_fetch_array(mysql_query($query)); extract($f); if ($action=="redirect") header("Location: ".$url); elseif (!$action) header("Location: http://$HTTP_HOST/b/".$filename); ?>

Перенаправление выполняет стандартная функция PHP header(). Как видно из кода, ничего сложного.

Самая сложная часть (по сравнению с остальными, но на самом деле всё очень просто) — это скрипт администрирования adm.php. Вот краткая структура этого файла:

* include(«conf.php») — подключение к БД.
* function http($str) — добавляет http:// при необходимости. Пользователь может ввести URL баннера как с префиксом http://, так и без него и система это учитывает.
* function banners_table() — выводит таблицу баннеров . Фактически на экране — содержимое таблицы banners из БД.
* function banner_code($ banner _ id ) — выводит HTML-код баннера пользователю.
* function banner_show($banner_id) — показывает тест баннера . Он будет показан так, как будет выглядеть на HTML-странице сайта.
* обновление данных в базе и закачка файла при нажатии кнопки отправки на форме
if ($action==»write» && $banner_id)
* добавление новой записи (строго после max номера)
if ($action==»add» && $comment)
* удаление записи с указанным id
if ($action==»delete» && $banner_id)
* загрузка данных в форму из записи с указанным id
if ($action==»read» && $banner_id)
* отображает HTML-код баннера
if ($action==»code» && $banner_id)

Скажем, вы добавили и отредактировали записи, загрузили баннеры, и что дальше? Теперь щёлкнув по ссылке <код> в строке, соответствующей нужному баннеру, вы получите HTML-код изображением-ссылкой вроде:

<a href="./i.php?action=redirect&id=1"><img src="./i.php?id=1" border="0" /></a>

Теперь вы можете поместить это код в нужные места ваших HTML-страниц и… забыть о них, поскольку теперь при смене баннера вам нужно будет только изменить запись в панели администрирования.

Полный комплект файлов доступен здесь. Там же хранится SQL-скрипт для создания таблицы banners и демо-версия системы.

Описанная баннерная система реально используется на сайте http://58region.ru. Следует отметить, что это очень простая баннерная система, и я постарался сделать её максимально «прозрачной» для последующего наращивания и совершенствования.

Источник: internet-technologies.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи