Login LoginClose
| Lost password
phpFK - Logo

О запуске форума
 1
03.01.15 00:55
fe57 

О запуске форума

Этот разговор с самим собой планируется полезным мне в будущем. Когда забуду, как запускать форум, а будет нужно. Если окажется полезным кому-то ещё, буду рад.

Во-первых, выражаю искреннюю благодарность автору форума, авторство и ссылки указаны в самом низу странички. Это один из немногих движков, который запустился в моих неопытных руках, и единственный понравившийся. О php наслышан как и все, но не более. Про SQL, его разновидности, про то что он требуется для большинства движков форумов - узнал позавчера, а также узнал, что в моём тарифном плане хостинга не предусмотрена работа с базами данных. Попробовав несколько txt-форумов, остановился на этом.

03.01.15 00:56
fe57 

Re: О запуске форума

Всё произошло отлично, но есть одна тонкость, которая может отнять немало времени или просто огорчить. Это отображение кириллицы, а также unicode-символов. Вместо них отображалась комбинация &#-код, и написать что-либо нелатинницей было невозможно.
После поиска места, где хранятся посты и сообщения, было обнаружено, что в префиксе unicode-символов &# символ & заменяется комбинацией & amp; (пробел вставлен нарочно, иначе парсер преобразует всю комбинацию в обычный амперсанд).
Ручная правка содержимого файлов данных форума сделала возможным написать кириллические символы таким хитрым образом и подтвердила догадку - при сохранении данных форума сообщения ошибочно парсятся дважды, отчего и происходит замена амперсанда в уже сформированных html-кодах unicode.

03.01.15 01:00
fe57 

Re: О запуске форума

Обзор интернетов привёл к следующей страничке: http://php.net/manual/ru/function.htmlentities.php. Здесь написано, что для избежания досадного эффекта кодирования уже закодированных символов в версии PHP 5.2.3 и выше для функции htmlentities(..) введён дополнительный булевый аргумент double_encode, явно разрешающий или запрещающий перекодирование.
В движке форума функция htmlentities(..) имеет лишь один аргумент, и встречается эта функция в трёх местах:

\pm.php
\post.php
\include\functions.php

Решением проблемы стала замена



на



в этих трёх файлах во всех местах где есть вызов htmlentities(..). Всё заработало как нужно.

Ещё небольшой момент, которого не нашлось в инструментах администратора и который пришлось доделать вручную. Попав на форум, пользователь может пожелать сходить на корневой сайт. И огорчиться, не найдя лёгкого пути. Для этого логотип сайта обложен ссылкой на уровень вверх, в файле \styles\bluelight\top.html вот так:

03.01.15 01:10
57fe 

Administrator

Re: О запуске форума

В процессе написания поста обнаружилась ещё одна проблема. Неверно считается число оставшихся для написания поста символов при использовании кириллицы. Считаются символы в редакторе, а при попытке запоститься считаются символы после html-unicode-энкодера, которых уже в 5-6 раз больше. В результате написанный пост не влез в одно сообщение, хотя движок форума говорил мне о неизрасходованных более чем 2000 символов из доступных 5000.
Как временное решение проблемы - изменил лимит числа символов сообщения с 5000 на 50000. При этом теперь 1 пишем, 5-6 в уме.

 1