Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11639
Последний выпуск: 19.06.2015

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

Автор: Алексей Курепин
Сайт: http://foxweb.net.ru
4 февраля 2006 года

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

Введение

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

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

  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. Следует отметить, что это очень простая баннерная система, и я постарался сделать её максимально "прозрачной" для последующего наращивания и совершенствования.

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

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог