» Форма входа

»Мoy-weB ver.4.1

» Статистика

Главная » 2008 » Сентябрь » 20 » Простая баннерная система phpFBS

Простая баннерная система phpFBS
20.Сен.2008 | 20:38:59

Простая баннерная система 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.
Следует отметить, что это очень простая баннерная система, и я
постарался сделать её максимально "прозрачной" для последующего
наращивания и совершенствования.
Категория: Статьй и уроки | Просмотров: 569 | Добавил: CorsaR
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]