Xwab
Форумыnavigate_nextПрограммирование на PHP

Создание форума | null byte
Сообщения
JESOD

На счёт форума разобрался, спасибо Akdmeh на наводку.
Как вообще работать с закреплёнными темами, как их заставить быть вверху? Вариант только делать два вывода, отдельно для простых тем и дургой вывод для закреплённых?
----------
Возник вот другой вопрос защиты скрипта - null byte.
Лично я только фильтровал переменные обычными способами. Но никак не защищался от null byte. Кто объяснит как от него защититься и когда есть вероятность появления этой уязвимости?


__________
посл.ред. 04 Янв 2011, 21:21; всего 2 раз(а) 03 Янв 2011, 12:00
Akdmeh

1) Разделы неограниченной вложенности - кажется об этом писал iceman12 или ещё кто-то, я полностью согласен с той заметкой.
Если интересно - поищи, или я сам найду.

Таблицы:
таблица пользователей, если пользователи будут, сюда пишешь логины, пароли, количество постов, забанен ли, время регистрации и т.д.;
Таблица разделов - id, название, позиция;
Таблица тем - название темы, автор темы, закрыта/открыта ли, количество постов (полезная вещь), время и автор последнего поста (поможет сэкономить время, не тратя время на поиск последнего поста), id раздела, где находится тема, минимальный уровень, начиная с которого можно видеть тему (возможно), и всякие прочие вещи;
Таблица поста - автор, время, редактировалось ли, забанен ли за этот пост, рейтинг поста (например), ip и soft (если нужно), трезвость пользователя (ыыы), id темы, где находится пост;

Вроде бы для минимального форума этого хватит с верхом.
Остальное - дело ловкости рук;)

03 Янв 2011, 12:12
JESOD

Спасибо, пост прочёл, но не вникал. Сейчас закончу с одним делом возиться и отпишусь тут.

03 Янв 2011, 12:30
OZ_

Всё же вложенность лучше ограничить. Например, десятью уровнями. Тогда это позволит существенно упростить и ускорить работу с деревом.
Да и вообще, если юзеру придётся 10 раз перейти по дереву, просто чтобы увидеть список тем, он такое "удобство" не оценит.
Но это уже для продвинутых форумов, а не для простейших.

Про таблицы уже написано, осталось только решить, где хранить сессии.
В таблице пользователей пароли нужно хранить не в чистом виде, а результат функции md5.

Структура скриптов, рекомендуемая мной:
1) mod_rewrite
2) все запросы идут к index.php, больше никаких php-файлов в публичной директории быть не должно.
3) index.php проводит первичную инициализацию, смотрит на строку запроса, и подключает скрипт, который должен обработать этот запрос.
Например, строка запроса /post/new/ требует вызвать include messages.php (который находится не в публичной директории).
4) Никаких глобальных переменных! index.php (или его продолжение) должен содержать реестр (статический класс), в котором будут храниться все "общие" переменные.
5) Все переходы между модулями должны быть внешними (по ссылке), модули не должны знать о существовании друг друга и, тем более, инклудить друг друга.
6) html желательно отделять от кода.
7) все строковые данные нужно хранить в отдельных файлах (например, "Написать сообщение", "Отправить", "Создать новую тему" и т.д.).

03 Янв 2011, 12:35
JESOD

Всем спасибо! Прочёл более детально. Сейчас буду выбирать для себя, что подходит мне.
P.S. Форум пишу к двигу своему. Так что регистрацией уже решено. Спасибо ещё раз всем! Не думал даже, что помощь будет "с верхом"... Тему пока не закрываею.

03 Янв 2011, 12:46
Sashon

соглашусь то что уровней должно быть не ограничено!...если хочеш еще что нибудь знать пиши в асю

03 Янв 2011, 12:49
Akdmeh

5, тему не закрывай - авось кому ещё будет интересно что-то спросить.

03 Янв 2011, 12:57
JESOD

7. У меня возник вопрос. Вот при создании темы, первый пост темы записывать, как обычный пост в таблицу, к примеру `posts` или в таблице `temy` создать поле для первого поста? По так первый вариант, меньше мороки.

03 Янв 2011, 14:13
Sceptic

Можно конечно и отдельную таблицу, например `first_posts`, и каждому первому посту, который добавляется в вышеуказанную таблицу, прикреплять id соответствующей темы

03 Янв 2011, 14:26
JESOD

А какой смысл? Я честно, не понимаю. Мой первый вариант, вроде те же преимущества имеет.

03 Янв 2011, 14:48
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.