Sadda.ru Ironetcart Андроид Ассемблер MASM32 Linux Все статьи Table of Contents


 

Разработка форумного движка

  Макс Петров Апрель 2014

      Разработка движка форума включает в себя реализацию следующих подзадач:
      - система защиты от спама;
      - система авторизации пользователей;
      - система ввода, обработки и отображения сообщений;
      - система администрирования;
      - система подсчета, хранения и отображения статистики.

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

      Разработка защиты форума - легкая часть работы. Легкая потому, что защите подлежат только отдельные участки кода (формы, "входы" в скрипты, POST, GET-запросы), а действия злоумышленников предположительно известны. Защита не взаимодействует со всеми частями программного комплекса (форума), а выполняет узкие задачи только в конкретных частях его. Поэтому, будучи однажды отлаженной, защита не "сыплется" при дальнейших доработках и изменениях форума. Функции защиты нетребовательны к вычислительным ресурсам и не являются чем-то, что могло бы выходить за пределы понимания программиста даже начального уровня.

      Форум не является сайтом, на котором пользователь от своего имени совершает значимые действия (финансовые операции, например). Большая часть пользователей форумов вообще свои подлинные имена не раскрывает, предпочитая ники. Смысл авторизации на форуме состоит в связывании пользователя, по его желанию, с картинкой-аватаром, рейтингом, счетчиками и тому подобными вещами, которые являются, по сути, просто игрушками. Более того, поскольку пользователь скрывается за ником, никаких претензий по поводу потери, взлома, порчи своего аккаунта к владельцу форума этот пользователь, я думаю, предъявить не сможет. Ответственность возникает в силу закона или на основании договора, договор же может быть заключен только при указании гражданином своего подлинного имени, которое ником заменено быть не может. Так что, придумывать сложные и извращенные алгоритмы авторизации на форуме незачем.

      Поступаем просто. Заводим на каждого посетителя сессию, в ней переменную, которая имеет значение либо "Гость", либо равна логину пользователя (при его авторизации).

      Сердцем форума является та его часть, которая отвечает за прием, обработку, выдачу сообщений. Творческой частью работы здесь будет являться придумывание структуры переменных (полей), в которые должны записываться поступающие от пользователей данные (тексты сообщений) и сопровождающая их служебная информация (ник, дата, IP-адрес, статистика и т.д.). Принципиально важно предусмотреть в этой структуре резервные поля, что даст возможность развить форум в дальнейшем без потери совместимости с уже накопленным архивом сообщений.

      Программирование приема, обработки, выдачи сообщений сводится, практически, к обработке текста и затруднений не вызывает.

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

      Должно быть предусмотрено массовое удаление сообщений (удаление темы целиком или даже удаление группы тем). Удаление сообщений влечет за собой необходимость пересчета статистик и пересмотра внутренних ссылок. Функция удаления должна как-то узнавать всю значимую информацию по каждому из удаляемых сообщений и вносить соответствующие изменения в счетчики, рейтинги и т.п. Мы не можем ставить администратору сайта ограничение наподобие: "если в теме больше десяти сообщений, то удалить тему нельзя". Что и в каком количестве ему удалять, решает сам администратор. Исходить надо из обеспечения возможности удалять темы любого объема. Поэтому, функция удаления сообщений и тем - это одна из самых ресурсоемких программных частей форума и одна из самых трудных частей разработки. Виду того, что функция удаления сообщений уничтожает файлы и должна "влазить" во многие файлы для внесения изменений, эта функция опасна в том смысле, что, будучи криво написанной, когда-нибудь обрушит форум целиком.

      Программирование рейтингов и счетчиков представляет сложность по причине, указанной выше.



Ironetcart

      Техническая поддержка: http://ironburattin.ru
      Взять движок: Форум на файлах «Ironetcart» (скачать)

      Разработка форумного движка
      Форум «Железный Бураттин» (название и концепция)
      Статическая защита форм
      Идеальная капча
      Как я победил магические кавычки
      Внеклавиатурные символы HTML
      Хранимые XSS-атаки и защита от них (удаляем javascript из html в браузере)
      Защита визуального html-редактора (фильтрация HTML на стороне сервера)
      Скорость движка форума: файлы или база данных
      Прогресс-бар на PHP
      Зачем тупому форуму поиск?

     


© Max Petrov При использовании материалов ссылка на sadda.ru обязательна