← Обновление файла обработки комментариев
О комментариях
Как работает комментирование на сайте, работающем на Almaz CMS.
За работу комментариев на сайте отвечают следующие файлы:1. single.php - вывод существующих комментариев и форма добавления новых комментариев. Тут все понятно... Подробности не требуются.
2. comments-post.php - обрабатывает добавляемый комментарий и сохраняет его в базе комментариев.
Подробнее о его работе:
Файл comments-post.php получает данные из формы добавления комментариев и производит следующие проверки:
На правильное заполнение всех полей, в том числе корректный Email;
Нестандартная ФИЧА:
Не встречалась в других CMS.
Проверка на отправку сообщения со страницы, расположенной на этом же сервере. Сделано это в целях защиты от спама, так как применения капч я пытаюсь (пока успешно!) избежать. При попытке добавления комментария не со страницы сервера скрипта результатом будет вывод сообщения о признании его спамером, будет выведен его IP-адрес и USER-agent.
В базу ничего записано не будет;
Стандартная ФИЧА:
при правильном добавлении комментария его содержание будет записано в базу комментов, комментатор получит сообщение с текстом добавленного комментария, уведомлением о том, что этот коммент добавлен в базу и отправлен на модерацию, а также просьбой не добавлять данный комментарий повторно. Комментатору будет установлен cookie сроком на 2 минуты. С помощью установленного cookie предотвращается слишком частое комментирование и DDOS-атаки через частое добавление комментариев. В то же время нормальный человек вряд-ли тратит меньше 2 минут на прочтение поста и написание к нему комментария...
При добавлении коммента в базу админу будет выслано уведомление на Email, указанный в файле конфигурации, о добавлении комментария на сайте.
В тексте сообщения будут указаны следующие параметры:
1. На каком сайте добавлен комментарий;
2. URL комментируемой статьи;
3. Имя комментатора;
4. Текст комментария;
5. Email комментатора;
6. IP-адрес комментатора.
3. Файл базы комментариев.
Так как это единственный файл в Almaz CMS, на который требуется установка прав на запись, в целях повышения безопасности скрипта добавлена возможность для администратора сайта изменить имя и расширение файла базы комментариев на произвольное. Примеры описаны в файле конфигурации.
При изменении имени файла проверьте, что вы изменили имя файла на сервере и в конфигурационном файле!
Файл расположен в папке comments (на данную папку права на запись не требуются). В дистрибутиве этот файл называется comments.txt.
Конфигурация комментариев:
Первое: администратор сайта может через файл конфигурации - const.php - разрешить либо запретить комментарии. Строка:
define('COMMENTBLOCK', 1); // Выводить блок комментариев на страницах статей? 0 - не выводить; 1 - выводить. Означает, что если изменить значение COMMENTBLOCK с 1 на 0, то на страницах с одной статьей (single.php) не будет выводиться весь блок комментариев - и форма для добавления комментариев и существующие комментарии к этой статье.define('COMMENTFILE', 'comments.txt'); //Файл, в котором будут храниться комментарии, должен существовать и быть доступным для записи.( Обычно это CMOD=666 ). Название и расширение файла тут можно изменить для безопасности, например на data.dat . Проверьте его наличие и CMOD на своем сервере!Это указание, какой файл в папке comments является базой для сохранения комментариев.define('RAZDELITEL', ': :'); // используется в базе статей для разделения частей данных, к примеру: заголовка статьи, текста статьи... Те же функции выполняет и в файле комментариевРазделитель, используемый для отделения частей данных в файлах базы, используется и в постах и в комментариях.Модерация комментариев:
О модерации комментариев на Almaz CMS следует знать следующее:
При добавлении комментария на сайте в файл базы комментариев дописывается в конец строка по такой схеме:
хххххххххххххх: :0: :имя комментатора: :Email@комментатора: :Текст комментария.: :IP_комментатора: :User-agent_комментатораВ этой схеме хххххххххххххх означает к какой статье данный комментарий, второй параметр - цифра 0 или 1 - это значение для публикации комментария. Если 0 - комментарий не публикуется, 1 - комментарий одобрен модератором и публикуется на странице статьи.
По установкам в скрипте при добавлении нового комментария этот параметр автоматически устанавливается в 0. Модератор при получении уведомления по почте о добавлении нового комментария на сайте должен скачать файл базы комментариев по FTP, и в соответствии со своим решением может либо принять данный коммент изменив значение с 0 на 1, отредактировать комментарий, либо удалить строку с комментарием, либо отложить решение, оставив данное значение в 0...
После этого надо залить измененный файл обратно на сервер.
После перезаливки проверьте права на запись у файла!
Нет времени прочесть? Поставьте закладку:
← Обновление файла обработки комментариев








Комментарии:
Не могу понять, для чего вы решили создать CMS на файлах, не проще ли и целесообразнее создать её на основе базы данных типаMySql? Что вам дает такой выбор?
Ответ от разработчика:
Причины такого выбора объяснены в этой статье.
К нестандартным фичам можно добавить, чтобы коммент сразу было видно, без обновлений и переходов.
Т.е. коммент в базу отправился, но страница остаётся та же с новым комментарием.
Ответ от разработчика:
Это приведет к заспамливанию, т.к. страницу с неотмодерированным, а уже опубликованным комментом можно скормить поисковикам. А Гугл и Яндекс, насколько я знаю, видят ссылки не только прописанные через тег A, но и просто в тексте (и не только в текстах) находят УРЛы и это имеет значение для ссылочного ранжирования.
Поэтому реализовано так, что комментатор получает четкое уведомление о том, что его коммент записан, не пропадет, но ушел на модерацию. Админ сайта получает уведомление на мыло о новом комменте и идет его модерировать...
Интересует 3 вещи про комментарии...
1)Почему сделан 1 файл комментариев? Ведь если много статей и комментариев, то долго будет читать...
Не лучше к каждой статье сделать свой файл с комментарием?
2) И можно ли сделать ограничение на количество отображаемых комментов на странице? Т.е. на первой странице 15 комментов, даллее следующие 15 комментов...
3) И можно ли редактор к комментариям прикрутить?
Ответ:
По пунктам.
1. Можно и так сделать, но есть ли необходимость?
а) тогда плагинам "Последние комментарии", "Топ комментируемых статей придется считывать ВСЕ файлы с базой комментов - убирая одну нагрузку, получаем две. Или эти плагины идут в топку..
б) у меня на сайтах не так уж много комментов, чтоб стояла необходимость делить их по файлам. До 2 мб файлы PHP считывает нормально - данное утверждение не тестил, встречал в каких то статьях по кодингу на PHP.
2. Это сделаю.
3. В целях безопасности изначально решил не делать. Нормальному человеку, по-моему, хватит текста. Если только смайлики добавить. Но по просьбам трудящихся можно добавить простой редактор BB-кода.
По 1 пункту:
на самом деле есть решение, для плагина "Последние комментарии" сделать отдельный файл, в котором происходит автозамена строк по принципу стека...
А плагин "Топ комментируемых статей" тоже можно просто сделать в отдельных файлах-счетчиках...
Сейчас попробовал сделать для каждой статьи отдельный файл с комментариями, все получилось :)
Еще вопрос:
Откуда берется дата комментариев? что не сообразил...
Хорошо было бы если можно было задавать дату отображения комментариев...
Хотя мне и так все уже нравится :) Только пагинацию комментариев и BB-код еще хочется.
Ответ:
Для пагинации комментов можно использовать имеющуюся в движке функцию newoldnavi($lns,$cp,$page,$pagename) которой передаются четыре переменных -
$lns - разбиваемый на страницы массив (т.е. для данного случая массив строк из файла комментов);
$cp - количество единиц массива на одну страницу (т.е. по сколько комментов на странице);
$page - номер текущей страницы, для которой надо построить навигацию;
$pagename - имя php-файла, для которого строится навигация.
Функция расписана в файле funtions/func.php. Массив разбивается от последних ключей к первым, т.е. в обратном порядке, от новых к старым (поэтому и обозвал нью-олд-нави). Возвращает в виде строки div с навигацией по страницам, посмотри в функции. На ее основе работает пагинация в админке при редактировании комментов, редактировании опросов на сайте.
Дата комментов пишется в базу при добавлении комментария - смотри последнее значение в строке одного комментария.
Если хочется поправить дату коммента - в интерфейсе модерации комментариев поле даты - вверху справа.
Про отдельные файлы для плагинов - да это лучшее решение, если разбивать комменты для статей по файлам.
Пока, честно говоря, сильно занят, поэтому BB-код и смайлики отложил на будущее...
Добавить комментарий:
При добавлении комментария не должно остаться незаполненных полей.