Форум своими руками. PHPBB

Антон Орлов (Москва)

О том, что такое «Интернет-форум», думается, знают уже все. Достаточно зайти хотя бы на сайт журнала «Магия ПК», чтобы получить возможность поучаствовать в дискуссиях, добавляя на веб-страницу темы сообщения, доступные для чтения всем посетителям форума. В настоящее время редкий сайт среди мало-мальски крупных обходится без форума. Даже владельцы небольших домашних страничек иной раз не удерживаются от искушения снабдить их сервисом для высказывания посетителями мнения о дизайне сайта или о помещенных там фотографиях любимого кота…

В стародавние времена создание форума занимало дни и даже недели труда программистской студии. Но теперь, благодаря технологиям PHP и MySQL, создать форум под силу даже программистам-одиночкам. Некоторые из таких разработчиков, снабдив форумом свои сайты, пожелали подарить свои творения всему миру и оформили их в виде законченных пакетов программ, пригодных для широкого распространения. И теперь любой сайтостроитель может загрузить из Сети такой пакет и, выполнив инструкции по его установке, предоставить посетителям поле для словесных баталий и обстоятельных бесед. Для этого потребуется разве что поддержка PHP веб-сервером и наличие на нем установленной MySQL, но эти программы сейчас есть практически на всех сервисах платного хостинга.

В этом номере журнала и в последующих вы найдете обзор таких разработок, узнаете о возможностях и особенностях каждой из них. Ну, а об общих вопросах установки форума рассказывалось в прошлом номере. Впрочем, особенности инсталляции будут указываться и в следующих статьях — ведь, как ни крути, разработки кое-в- чем различаются…

Форумы: правила работы

Для начала стоит сказать несколько слов об общем устройстве форумов с точки зрения не программиста, а пользователя. Ведь это именно те, ради кого все делается… Основные принципы работы большинства Интернет-форумов сводятся к следующему.

  • «Структурной единицей» форума является тема (иначе называемая «топиком», «тредом») — нечто вроде гостевой книги, посвященной отдельной тематике. Темы создаются участниками форума. Сообщения, добавленные в тему, могут представляться как идущие друг за другом на странице, или же в виде структурированного набора ссылок («дерева»). Темы форума могут быть сгруппированы по категориям.
  • В зависимости от настроек форума помещать сообщения и создавать новые темы могут либо совершенно любые посетители, либо только те, кто ввел логин и пароль, позволяющие это сделать (это называется «прохождение авторизации»). Логин и пароль для авторизации необходимо получить заранее, введя на специальной странице некоторые свои данные (такой ввод называется «регистрация на форуме»). Обычно от желающих зарегистрироваться требуется указать свой адрес электронной почты, который будет также использоваться при восстановлении забытого пароля.
  • Зарегистрированные посетители застрахованы от попыток подделки их имен, то есть никто другой не сможет писать сообщения на форум, представляясь точно таким же именем. К тому же регистрация обычно дает доступ к некоторым дополнительным сервисам форума, таким, как отправка новых сообщений форума на e-mail, автоматическое выделение в интерфейсе форума новых тем и сообщений с момента последнего посещения и т. д.
  • Управляет всем этим хозяйством администратор форума, используя для этого специальный административный интерфейс (для доступа к нему необходимо знать специальные «административные» логин и пароль). Администратор может настраивать внешний вид форума, удалять темы и перемещать их между категориями, а также запрещать отдельным зарегистрированным участникам работать с форумом.
  • Часть прав администратора, в частности, право удалять сообщения и темы, могут получить и другие зарегистрированные участники форума. В этом случае они будут называться модераторами и в их задачи будет входить удаление непристойных и оскорбительных сообщений, если таковые будут помещены на форум. Возможность назначать модераторов есть у администратора форума.
  • Некоторые форумы позволяют модераторам просматривать отправляемые сообщения перед их размещением на страницах форума (в этом случае сообщения отправляются модераторам по электронной почте) и разрешать публикацию на форуме лишь желательных сообщений. Обычно для такого разрешения модератор должен выполнить переход по специальной ссылке в письме с текстом присланного сообщения. Такая схема работы называется премодерацией (а возможность удаления сообщений уже после их появления в форуме, соответственно, постмодерацией). На некоторых форумах отдельные из перечисленных возможностей могут отсутствовать.

Итак, начнем с самого популярного комплекта «форумных» программ -PHPBB.

PHPBB

PHPBB (http://www.phpbb.com), что означает «PHP Bulletin Board» (доска объявлений на PHP), — один из самых популярных комплектов сценариев для создания форума. Сервисы общения на основе PHPBB можно увидеть на очень многих сайтах.

Возможности

Возможности форума на PHPBB весьма обширны. Вкратце их можно описать следующим образом.

  • «Прямой» вид тем форума. Сообщения в виде комментариев к заглавному сообщению темы выводятся на странице полностью друг за другом сверху вниз. Для просмотра всех сообщений достаточно зайти на страницу темы и дождаться окончания ее загрузки. При большом количестве откликов страница может автоматически разделяться на несколько частей, которые можно просматривать последовательно.
  • Разветвленная система разделения тем по разделам. Администратор форума может создать произвольное количество разделов и подразделов в каждом из них — так называемых «форумов», и уже в этих подразделах посетители будут создавать темы для обсуждения и, соответственно, вести эти самые обсуждения. Это очень удобно, если есть желание посвятить форум не одной, а целому набору тематик: темы и сообщения, посвященные разным вопросам, не будут смешиваться.
  • Система регистрации посетителей. Посетители форума могут зарегистрироваться на нем, то есть получить логин и пароль для входа на форум. Помимо защиты от перехвата имени и доступа к дополнительным сервисам регистрация дает посетителю возможность указывать при создании темы или внутри сообщения различные сведения о себе и даже картинку, вкратце характеризующую себя (так называемую аватару) или собственную фотографию.
  • Большое количество дополнительных сервисов. Посетителям форума доступно множество полезных сервисов, начиная от системы поиска по форуму и заканчивая возможностью добавлять к своим темам системы голосования по каким-либо вопросам. Некоторые из сервисов могут быть использованы только зарегистрированными участниками, прошедшими авторизацию при входе на форум. В частности, таковым предоставляется возможность обмениваться между собой сообщениями, минуя систему электронной почты или Интернет-пейджеров — нечто вроде мини-почты в пределах одного форума.
  • Весьма широкие возможности администрирования. Форум PHPBB — едва ли не рекордсмен по возможностям его настройки. Средства управления форумом позволяют администратору полностью изменить как цветовую гамму, так и шрифты форума, сделав его практически полностью неузнаваемым. Нетрудно также запретить использование в сообщениях форума тех или иных слов (например, ругательств) — вместо них будут выводиться звездочки или какие-либо другие заменяющие символы.

Кроме того, у администратора PHPBB есть права создания и удаления разделов, подразделов и тем форума. Он может просто «заблокировать» отдельный форум или тему, то есть запретить в них дальнейшую публикацию сообщений. Есть и сервис автоматического отслеживания «возраста» тем — если его включить, то темы, на которых не было откликов в течение определенного времени, будут удаляться без участия администратора. К услугам владельца форума — средство массовой рассылки зарегистрированным пользователям какой-либо информации на их e-mail-адреса (это может пригодиться, скажем, для оповещений о предстоящих перерывах в работе форума или для отправки поздравлений с праздником).

Для работы администратора в PHPBB есть специальный раздел — «Панель администратора». Ссылка на нее появляется в интерфейсе форума (в самом низу всех страниц), если пройти авторизацию с администраторскими логином и паролем. Все настройки и средства, доступные администратору, можно найти именно в этой Панели. Например, настройка внешнего вида форума находится в разделе «Styles Admin» — «Management» — «Edit», сервис рассылки — в разделе «General Admin» — «Mass Email», система создания, удаления и блокировки форумов — в пункте «Forum Admin» — «Management», а общие настройки форума — в пункте «General Admin» — «Configuration».

Особенно много возможностей у администратора PHPBB есть в плане управления правами пользователей форума. В разделе Панели администратора «Forum Admin» — «Permissions» для каждого из форумов можно указать, обязательно ли проходить регистрацию для помещения в них тем и сообщений. Нетрудно запретить отдельным пользователям работать с теми или иными форумами или, наоборот, разрешить это делать лишь отдельным участникам.

В PHPBB можно создать «закрытые» форумы, то есть такие, даже просмотреть сообщения в которых смогут лишь те, кому это разрешил администратор. Это может быть целесообразно, например, в том случае, если информация, обсуждаемая в форуме, предназначена лишь для специалистов в той или иной отрасли и может повредить тем, кто таковым не является (скажем, сведения о методах лечения тех или иных заболеваний, применять которые имеют право лишь профессионалы).

Более того, форум можно сделать не только «закрытым», но и «невидимым» для определенной категории посетителей: в последнем случае даже узнать о существовании такого форума смогут лишь те, кому это разрешено администратором (в разделе Панели администратора «User Admin» — «Permissions»), поскольку его название не будет отображаться в общем списке форумов на главной странице.

Для облегчения своей работы администратор может создать несколько групп пользователей (в разделе Панели администратора «Group Admin» — «Management»), предоставив пользователям разных групп разные права доступа («Group Admin» — «Permissions») и назначив старших в этих группах. В этом случае пользователь, желающий получить доступ к закрытому форуму, может обращаться не к администратору, а к старшему в группе пользователей, имеющих такой доступ.

Администратор может свободно просматривать сведения, указанные пользователями при регистрации (так называемые профили пользователей), редактировать или удалять их (для этого служит раздел Панели администратора «User Admin» — «Management»), а также запрещать участие в форуме посетителей с каких-либо IP-адресов или не позволять указывать при регистрации те или иные имена или e-mail-адреса (раздел «User Admin» — «Ban Control»). По воле администратора некоторые зарегистрированные пользователи могут получить статус модераторов, то есть право удаления тем и сообщений в доверенных им форумах.

Интересной особенностью PHPBB является наличие системы званий для зарегистрированных пользователей — такое звание будет отображаться на страницах форума рядом с именем участника. Звания должен придумать сам администратор форума; он же занимается и их присвоением (в разделе «User Admin» — «Ranks»). Впрочем, последнее совсем не обязательно — можно настроить и автоматическое присвоение звания в зависимости от количества сообщений, помещенных участником на форум.

PHPBB снабжен довольно подробным руководством для пользователей (в русифицированной версии — переведенном), так что, установив форум, вам не придется писать еще и инструкцию по его настройке.

  • Дополнения и темы. Комплект PHPBB устроен так, что за каждую выполняемую им функцию отвечает определенный модуль комплекта -отдельный набор PHP-сценариев и файлов. Многие из таких модулей могут быть определенным образом доработаны для добавления в форум новых функций или изменения его дизайна. Web-мастера, устанавливавшие PHPBB, редко довольствовались стандартным синеватым цветом страниц и набором возможностей и зачастую дополняли и расширяли его сценарии — ну, а дополненные и расширенные версии не грех и предоставить в свободное пользование другим своим коллегам. В результате в Сети появились коллекции так называемых «модов» или «хаков» для PHPBB -это не что иное, как дополнения к комплекту, позволяющие увеличить его функциональность.
  • Отделение основных сценариев PHPBB от файлов, определяющих его внешний вид, также позволило относительно легко дорабатывать последние. Итогом такой доработки стало огромное количество так называемых «тем» для PHPBB, изменяющих дизайн форума до неузнаваемости. Эти «темы» также можно найти в Интернет-коллекциях.

Второй пакет заставляет форум говорить посетителю «ты» во всех текстах, ему адресованных. Есть и украинский языковый пакет. Форуму PHPBB посвящено также немало неофициальных сайтов, создаваемых энтузиастами, например, http://phpbb.sourceforge.net/phpBB.

Установка форума проходит по стандартной схеме, описанной в предыдущей статье — загрузка файлов форума на сайт, создание (вручную) базы данных для него, запуск сценария-инсталлятора (достаточно просто зайти на форум браузером — если установка не была произведена, вы будете перенаправлены на инсталлятор автоматически) и внесение в него данных для установки, автоматическое создание таблиц в базе данных форума, удаление инсталляционных файлов.

Для того чтобы надписи на страницах форума отображались на русском языке, скачайте с сайта PHPBB пакет русификации и поместите находящуюся в нем папку lang_russian в каталог language в той папке, куда были загружены файлы форума. Кроме того, если вы хотите, чтобы русскими были и надписи на графических кнопках, скачайте дополнение к пакету русификации (на странице загрузки ссылка на него расположена рядом со ссылкой на основной пакет) и поместите находящуюся в нем папку subSilver в каталог template в той папке, куда были загружены файлы форума, при необходимости согласившись на перезапись имеющихся файлов.

Если необходима повторная установка форума (например, при переносе его на новую базу данных, с другим именем), следует уничтожить все содержимое файла config.php (он находится в той папке, куда были загружены файлы форума), после чего загрузить на форум файлы инсталлятора, зайти на установочный файл браузером и выполнить установку заново. Именно в файле config.php указывается имя базы данных форума, хост, на котором она расположена, логин и пароль для доступа к ней (подробнее о том, что это такое, было рассказано в предыдущей статье).

К пакету PHPBB прилагается подробное руководство по установке (в файле install.html из папки docs) в случае проблем вы можете к нему обратиться, если знаете английский язык.

При установке форума обратите внимание, чтобы в его настройках, в разделе Панели администратора «General Admin» — «Configuration» — «Cookie settings», настройки cookie в точности соответствовали реальным параметрам форума, то есть, чтобы в пункте «Cookie domain» было указано доменное имя, на котором действительно расположен сайт с форумом, а в пункте «Cookie path» — путь к форуму от этого доменного имени (он будет отличен от «/», если файлы форума находятся в одной из подпапок сайта). Если этого совершенно точного соответствия не будет, то пользователи могут потерять возможность проходить авторизацию на форуме, и сервисы зарегистрированных участников им будут недоступны.

PHPBB и «внутренние» адреса

Если вы устанавливаете форум PHPBB на сервере в локальной сети, а ее пользователи имеют адреса e-mail вида user@group (для их составления применяются «внутренние» доменные имена 1-го уровня), то система регистрации нового пользователя в PHPBB не позволит их указывать в качестве адресов электронной почты — модуль проверки правильности e-mail-адреса считает, что доменное имя почтового ящика должно быть как минимум второго уровня. А так как адрес e-mail является обязательной информацией для регистрации в PHPBB, это приведет к практически полной невозможности такой регистрации.

Чтобы исправить положение, вам потребуется подправить программные файлы PHPBB. Это не так сложно, вы справитесь! Среди файлов форума найдите папку includes, а в ней — файл functions_validate.php. На всякий случай сделайте его резервную копию. Затем, открыв этот файл в текстовом редакторе, найдите в нем следующую строчку:

if (preg_match(«/^[a-z0-9&».-_+]+@[a-z0-9-]+.([a-z0-9-]+.)*?[a-z]+$/is’, $email))

и замените ее на такую:

if (1==1)

После этого блок проверки e-mail-адресов на «правильность» работать перестанет, и посетители вашего форума смогут указывать при регистрации любые адреса электронной почты.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *