Сабж. Домен и хостинг предлагаю так и оставить у сосича, что это не было каким-то перетягиванием аудитории и т.д. Предлагаю поднять его на субдомене, если вам понравится, дальше разговор к сосичу, если нет, то ладно, но хотел бы, чтобы вы попробовали.
Скриншот: https://imgur.com/a/avU1sv2
Что реализовал:
-
Имена участников хешируются (8 символов из sha-1). Вы конечно быстро поймете кто есть кто, но в целом я не знаю, как объяснить эту фичу правильно. Это такая некоторая защита вас друг от друга, тут некоторые любят (особенно это остро ощущается на ЛОРе) обсирать по личным обидам, а не по контексту сообщения.
-
Управление досками (подобно как здесь tdg, community, club)
-
Приватность досок (подобно как здесь клуб)
-
Регистрация по инвайтам (чтобы это было для своих, как тут)
-
Треды и ответы в них (есть тред и ответы, не ветки, как здесь)
-
Возможность удалять посты и редактировать их.
-
Базовая разметка (курсив, жирный, цитирование, блок кода)
-
Ссылки на соообщения вида >>123
-
Предпросмотр при наведнении на такие ссылки
-
Под постом на который сослались выводятся все такие сообщение, также с предпросмотром.
-
Вордфильтр (на случай вайпа, например, можно банить и добавлять слова в ворд-фильтр)
Пока протестировал как смог, вроде минимально готово.
Чего нет:
- Аватарок (не нужно, детский сад), это часть пункта 0.
- Вставки всяких картинок, телеграмов и всего такого. Изначально думал взять полностью концепт имиджборды, но по сути картинку можно вставить обычной ссылкой, не вижу проблемы, как и ютуб, как и телегу. Но если все очень сильно скажут, что это нужно, то я сделаю.
- Нет какой-то страницы профиля, рейтинга, звезд, статистики пользователя и все такое. В целом это даже на ЛОРе неактуально, здесь темболее (у всех миллион звезд).
Что есть, но иначе:
- Страница новостей это по сути доска, которую можно читать, но в которую нельзя писать (одмены могут). Думаю в будущем там чуть напедалировать, чтобы можно было комментировать, предложка и все такое. В целом уже подготовил почву (роли), чтобы сделать корректоров и все такое.
То до:
- Ну вот это с новостями доделать
- Сделать возможность выбора способа просмотра (как на имиджбордах / как на форумах), пока только первое, но второе сделать нетрудно, просто хочу сделать это как настройку у пользователя.
Код написан на пыхпыхе (скорее всего он крайне кривой, я не программист), планирую потом причесать и выложить на гитхаб или аналог.

Этот код берет строковую переменную, кастует ее к int, после чего конкатенирует ее к строке, кастуя ее обратно к строке. Это шизофрения чистейшая. Если уж работать трактористом, то вот чистый код:
$user = $db->querySingle("SELECT * FROM users WHERE id = {$_SESSION['user_id']}");И да, так делать не стоит уже по соображениям безопасности. Для этого у каждой dsl библиотеки есть соответствующий api в виде bind/prepare с проверкой на инъекции.
Понятно.
Ну и там по простыне такого много, при этом есть и правильное использование, видно, что не человек писал:
$ip = $_GET['ip']; $db->exec("DELETE FROM bans WHERE ip = '" . SQLite3::escapeString($ip) . "'");Вместо:
// prepare/bindValue _уже_ включает SQLite3::escapeString // Зачем лишнее выделение памяти и ненужное копирование $ip? $stmt = $db->prepare("DELETE FROM bans WHERE ip = :ip"); $stmt->bindValue(":ip", $_GET['ip'], SQLITE3_TEXT); $res = $stmt->execute();$parentIdDefault = isset($_GET['thread']) ? intval($_GET['thread']) : '';Тоже шиза, квантовое состояние переменной - хочешь знаковый инт, хочешь строка, и если строка, то набигают проверки на пустое значение root (ну что с головой-то), можно грабить корованы.
Какую нейронку насиловал?
function getReplies($db, $parentId, $limit = 3) {Ты уж определись, $db, начиная с 22 строки имеет глобальную видимость.
Квантование никак не срастается, теперь еще и булево:
$editId = isset($_GET['editmsg']) ? intval($_GET['editmsg']) : null;if ($parentCheck && $parentCheck != 0) {Ну это уже, видимо, автор дунул. Нейронка не может выдать такое совсем.