На счёт форума разобрался, спасибо Akdmeh на наводку.
Как вообще работать с закреплёнными темами, как их заставить быть вверху? Вариант только делать два вывода, отдельно для простых тем и дургой вывод для закреплённых?
----------
Возник вот другой вопрос защиты скрипта - null byte.
Лично я только фильтровал переменные обычными способами. Но никак не защищался от null byte. Кто объяснит как от него защититься и когда есть вероятность появления этой уязвимости?
1) Разделы неограниченной вложенности - кажется об этом писал iceman12 или ещё кто-то, я полностью согласен с той заметкой.
Если интересно - поищи, или я сам найду.
Таблицы:
таблица пользователей, если пользователи будут, сюда пишешь логины, пароли, количество постов, забанен ли, время регистрации и т.д.;
Таблица разделов - id, название, позиция;
Таблица тем - название темы, автор темы, закрыта/открыта ли, количество постов (полезная вещь), время и автор последнего поста (поможет сэкономить время, не тратя время на поиск последнего поста), id раздела, где находится тема, минимальный уровень, начиная с которого можно видеть тему (возможно), и всякие прочие вещи;
Таблица поста - автор, время, редактировалось ли, забанен ли за этот пост, рейтинг поста (например), ip и soft (если нужно), трезвость пользователя (ыыы), id темы, где находится пост;
Вроде бы для минимального форума этого хватит с верхом.
Остальное - дело ловкости рук;)
Спасибо, пост прочёл, но не вникал. Сейчас закончу с одним делом возиться и отпишусь тут.
03 Янв 2011, 12:30Всё же вложенность лучше ограничить. Например, десятью уровнями. Тогда это позволит существенно упростить и ускорить работу с деревом.
Да и вообще, если юзеру придётся 10 раз перейти по дереву, просто чтобы увидеть список тем, он такое "удобство" не оценит.
Но это уже для продвинутых форумов, а не для простейших.
Про таблицы уже написано, осталось только решить, где хранить сессии.
В таблице пользователей пароли нужно хранить не в чистом виде, а результат функции md5.
Структура скриптов, рекомендуемая мной:
1) mod_rewrite
2) все запросы идут к index.php, больше никаких php-файлов в публичной директории быть не должно.
3) index.php проводит первичную инициализацию, смотрит на строку запроса, и подключает скрипт, который должен обработать этот запрос.
Например, строка запроса /post/new/ требует вызвать include messages.php (который находится не в публичной директории).
4) Никаких глобальных переменных! index.php (или его продолжение) должен содержать реестр (статический класс), в котором будут храниться все "общие" переменные.
5) Все переходы между модулями должны быть внешними (по ссылке), модули не должны знать о существовании друг друга и, тем более, инклудить друг друга.
6) html желательно отделять от кода.
7) все строковые данные нужно хранить в отдельных файлах (например, "Написать сообщение", "Отправить", "Создать новую тему" и т.д.).
Всем спасибо! Прочёл более детально. Сейчас буду выбирать для себя, что подходит мне.
P.S. Форум пишу к двигу своему. Так что регистрацией уже решено. Спасибо ещё раз всем! Не думал даже, что помощь будет "с верхом"... Тему пока не закрываею.
соглашусь то что уровней должно быть не ограничено!...если хочеш еще что нибудь знать пиши в асю
03 Янв 2011, 12:497. У меня возник вопрос. Вот при создании темы, первый пост темы записывать, как обычный пост в таблицу, к примеру `posts` или в таблице `temy` создать поле для первого поста? По так первый вариант, меньше мороки.
03 Янв 2011, 14:13Можно конечно и отдельную таблицу, например `first_posts`, и каждому первому посту, который добавляется в вышеуказанную таблицу, прикреплять id соответствующей темы
А какой смысл? Я честно, не понимаю. Мой первый вариант, вроде те же преимущества имеет.
03 Янв 2011, 14:48