| Раздел: PHP, MySQL, веб-программирование | Автор: fox++ |
| E-mail: |
Www: http://foxweb.net.ru |
| Просмотров: 3814 | Дата: 04.02.2006 |
Для небольших проектов, если они изначально не ориентированы на рекламу, часто возникает потребность партнёрского обмена баннерами. Обычно такое случается пару раз в месяц, и вы решаете, что неплохо бы иметь под рукой инструмент, с помощью которого можно легко и просто управлять баннерными местами на страницах вашего сайта.
Что в нашем случае значит «управлять баннерными местами»? Что нам нужно от баннерной системы? Перечислим необходимые функции:
Все эти функции выполняет простая, на мой взгляд, баннерная система phpFBS (FoxWeb Banner System), написанная на языке PHP с базой MySQL за 4 часа.
Система состоит из трёх 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
<?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. Вот краткая структура этого файла:
Скажем, вы добавили и отредактировали записи, загрузили баннеры, и что дальше? Теперь щёлкнув по ссылке «код» в строке, соответствующей нужному баннеру, вы получите HTML-код изображением-ссылкой вроде:
<a href="./i.php?action=redirect&id=1"><img src="./i.php?id=1" border="0" /></a>
Теперь вы можете поместить это код в нужные места ваших HTML-страниц и... забыть о них, поскольку теперь при смене баннера вам нужно будет только изменить запись в панели администрирования.
Полный комплект файлов доступен здесь: http://foxweb.net.ru/test/phpFBS-1.0/. Там же хранится SQL-скрипт для создания таблицы banners и демо-версия системы. Описанная баннерная система реально используется на сайте http://58region.ru. Следует отметить, что это очень простая баннерная система, и я постарался сделать её максимально «прозрачной» для последующего наращивания и совершенствования.