Сабж. Домен и хостинг предлагаю так и оставить у сосича, что это не было каким-то перетягиванием аудитории и т.д. Предлагаю поднять его на субдомене, если вам понравится, дальше разговор к сосичу, если нет, то ладно, но хотел бы, чтобы вы попробовали.

Скриншот: https://imgur.com/a/avU1sv2

Что реализовал:

  1. Имена участников хешируются (8 символов из sha-1). Вы конечно быстро поймете кто есть кто, но в целом я не знаю, как объяснить эту фичу правильно. Это такая некоторая защита вас друг от друга, тут некоторые любят (особенно это остро ощущается на ЛОРе) обсирать по личным обидам, а не по контексту сообщения.

  2. Управление досками (подобно как здесь tdg, community, club)

  3. Приватность досок (подобно как здесь клуб)

  4. Регистрация по инвайтам (чтобы это было для своих, как тут)

  5. Треды и ответы в них (есть тред и ответы, не ветки, как здесь)

  6. Возможность удалять посты и редактировать их.

  7. Базовая разметка (курсив, жирный, цитирование, блок кода)

  8. Ссылки на соообщения вида >>123

  9. Предпросмотр при наведнении на такие ссылки

  10. Под постом на который сослались выводятся все такие сообщение, также с предпросмотром.

  11. Вордфильтр (на случай вайпа, например, можно банить и добавлять слова в ворд-фильтр)

Пока протестировал как смог, вроде минимально готово.

Чего нет:

  1. Аватарок (не нужно, детский сад), это часть пункта 0.
  2. Вставки всяких картинок, телеграмов и всего такого. Изначально думал взять полностью концепт имиджборды, но по сути картинку можно вставить обычной ссылкой, не вижу проблемы, как и ютуб, как и телегу. Но если все очень сильно скажут, что это нужно, то я сделаю.
  3. Нет какой-то страницы профиля, рейтинга, звезд, статистики пользователя и все такое. В целом это даже на ЛОРе неактуально, здесь темболее (у всех миллион звезд).

Что есть, но иначе:

  1. Страница новостей это по сути доска, которую можно читать, но в которую нельзя писать (одмены могут). Думаю в будущем там чуть напедалировать, чтобы можно было комментировать, предложка и все такое. В целом уже подготовил почву (роли), чтобы сделать корректоров и все такое.

То до:

  1. Ну вот это с новостями доделать
  2. Сделать возможность выбора способа просмотра (как на имиджбордах / как на форумах), пока только первое, но второе сделать нетрудно, просто хочу сделать это как настройку у пользователя.

Код написан на пыхпыхе (скорее всего он крайне кривой, я не программист), планирую потом причесать и выложить на гитхаб или аналог.

  • Oberstserj
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Там там строку кода удалить (хеширование) и будет обычный никнейм, можно и так конечно.

    Еще раз повторю: конкретно для нас здесь, для ЛТ, это минус. Но не для движка. Я сам готов назвать форумы, где эта фича зашла бы на ура. Так что норм.

    У ЛОРа нет такой фичи и на ЛТ нет и всем норм

    Да не норм, просто всем лень это реализовывать. Из всех живых пользователей здесь буквально каждый хоть раз что-то сказал по этому поводу. Просто сейчас ты тупо делаешь лишние действия - идешь на хостинг картинок, получаешь ссулку для маркдауна, несешь ее сюда. Но это никак не ограничивает. Просто лишнее неудобство. Никакой опасности конкретно для ЛОРа/ЛТ картинки не несут, ну не принято у нас ими срать как на дваче. Так что сравнение мимо. Да и никто не мешает удаляя ветку в архив оставить только тамбнейлы, которые весят меньше текста.

    • shikata_ga_naiOP
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      Лучшее решение тогда взять движок tinyib, потому что моя поделка буквально пытается переизобрести его, а там это “нативная” фича, можно сказать. Я еще давно говорил, что движок имиджборды здесь идеально бы зашел, как человек который держал две относительно популярные когда-то параши говорю, здесь даже атмосфера примерно такая-же, разве что тогда было модно срать аниме картинками, сейчас большинство это переросло (хотя на ЛОРе всякие понидрочеры до сих пор есть).

      Что касается этой поделки, что я наколякал: сегодня проверил еще раз все функции движка, чтобы они работали, исправил ошибки, вечером вброшу на гит. Если тут есть люди, кто разбирается в пыхпых стеке, было бы интересно послушать мнение (ревью кода?), хотя я и так знаю, что скорее всего там кал, т.к. почти все написано с применением помощи нейронок (свой 1% навыка использовал для того, чтобы соединять в кучу, дебажить и переделывать нейронке запрос, пока она не выдаст то, что мне нужно).

      Вышло что-то около 1500 строк кода (все в одном файле, это буквально была моя хотелка, хотя знаю, что это моветон лютый), это вместе с жс и стилями, а также в это число входит код который инициализирует файл базы данных (по хорошему его вообще в какой-то файл install.php выкинуть и удалить после установки), но мне дико нравится идея, что буквально кинул файл в корень и все работает.

      Не знаю, смогу ли развивать это сильно дальше, какие-то фичи прикрутить еще реально, но прям сложное что-то не уверен в силу того, что у кода нет какой-то правильной “основы”, я думаю. Человек который шарит в написании полюбому сначала делает какой-то каркас, который потом обрастает функциями и все там структурировано и по полочкам. Гопатыч в такое не умеет совсем кстати, я заметил, он вообще любит хуярить портянки где echo в столбик или ifthen конструкции лапшой сотнями строк, пиздос в общем.

      • Anoxemian
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        Бегло прочитал:

        1. Никогда не пхай куки без надобности, это просто неэтично.
        2. $user = $db->querySingle('SELECT * FROM users WHERE id = ' . intval($_SESSION['user_id']), true); - во-первых это шизофазия, во-вторых просто небезопасно. Это везде насквозь по всей простыне.
        3. Один запрос на топологию\конфигурацию для борды, а не 100500 функций для 100500 запросов на один чих. Зачем тебе sql? O_o
        4. if (isset($_GET['admin']) && $_GET['admin'] == 1) { === “1” либо ебаный intval
        5. function formatTime($timestamp) { - шиза. https://www.php.net/manual/ru/class.intldateformatter.php

        В целом заебок, но все надо переписать)))

        • MrSugoma
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          шизофазия

          Что это означает? И вообще, я бы хотел добавить, что БД надо делать из директорий и текстовый файлов в них (например, password.txt), каждый из которых содержит по одному параметру, а булевые параметры надо делать в виде файлов капсом, как, например, реализовано в Nocord: при наличии файла ANONYMOUS Nocord понимает, что на сервере разрешен анонимный постинг.

          Зачем тебе sql?

          Я и про это.

          • Anoxemian
            link
            fedilink
            arrow-up
            0
            ·
            1 year ago

            Этот код берет строковую переменную, кастует ее к int, после чего конкатенирует ее к строке, кастуя ее обратно к строке. Это шизофрения чистейшая. Если уж работать трактористом, то вот чистый код:

            $user = $db->querySingle("SELECT * FROM users WHERE id = {$_SESSION['user_id']}");
            

            И да, так делать не стоит уже по соображениям безопасности. Для этого у каждой dsl библиотеки есть соответствующий api в виде bind/prepare с проверкой на инъекции.

            • Anoxemian
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              Ну и там по простыне такого много, при этом есть и правильное использование, видно, что не человек писал:

              $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();
              
              • Anoxemian
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago
                $parentIdDefault = isset($_GET['thread']) ? intval($_GET['thread']) : '';
                

                Тоже шиза, квантовое состояние переменной - хочешь знаковый инт, хочешь строка, и если строка, то набигают проверки на пустое значение root (ну что с головой-то), можно грабить корованы.

                Какую нейронку насиловал?

                • Anoxemian
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  1 year ago
                  function getReplies($db, $parentId, $limit = 3) {
                  

                  Ты уж определись, $db, начиная с 22 строки имеет глобальную видимость.

                • Anoxemian
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  1 year ago

                  Квантование никак не срастается, теперь еще и булево:

                  $editId = isset($_GET['editmsg']) ? intval($_GET['editmsg']) : null;
                  
                  • Anoxemian
                    link
                    fedilink
                    arrow-up
                    0
                    ·
                    1 year ago
                    if ($parentCheck && $parentCheck != 0) {
                    

                    Ну это уже, видимо, автор дунул. Нейронка не может выдать такое совсем.

        • Holger
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          $user = $db->querySingle('SELECT * FROM users WHERE id = ’ . intval($_SESSION[‘user_id’]), true); - во-первых это шизофазия, во-вторых просто небезопасно. Это везде насквозь по всей простыне.

          а в чем собственно шизофазия? да вообще то рекомендуется prepare

          • Anoxemian
            link
            fedilink
            arrow-up
            0
            ·
            1 year ago

            в следующем посте написано)

            • Holger
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              понял) вопросов больше нет

            • shikata_ga_naiOP
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              Бжлад, ну у меня были сильные подозрения, что гопатыч мне хуй за щеку вместе с кодом дает, но я смотрю мол, вроде работает и задачи выполняет, ну в целом это ожидаемо было, я и не скрывал :)

              В общем парни, хочу сказать, что айтишники без работы точно не остануться тогда, ближайшие лет 20 судя по всему, как минимум. У гопатыча есть еще одна проблема: пока размер всего кода укладывается в максимум пару сотен строк, он еще как-то пытается думать и т.д., потом у него просто окно контекста схлопывается. Чтобы работать с этим кодом я использовал супер-дупер-новомодную идешку cursor-ai (в арче можно ебануть прямо из аура пакетом cursor-bin). Там есть режим агента, где гопатыч интегрирован в этот нотепад и там сильно проще давать контекст (выделил строки и сказал че хочешь, если ему надо, он шарится по всему проекту). Через обычный онлайн чат даже такого говна не добиться, он через пару сообщений забывает о чем ты с ним говорил, лол.

              • Anoxemian
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago

                Нормуль, это называется vibe-driven кодинг. Типа, мамка, смотри, я заебательский кодер! бип-бип)))) Оно ж работает по факту)

              • MrSugoma
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago

                У гопатыча есть еще одна проблема: пока размер всего кода укладывается в максимум пару сотен строк, он еще как-то пытается думать и т.д., потом у него просто окно контекста схлопывается. Чтобы работать с этим кодом я использовал супер-дупер-новомодную идешку cursor-ai (в арче можно ебануть прямо из аура пакетом cursor-bin). Там есть режим агента, где гопатыч интегрирован в этот нотепад и там сильно проще давать контекст (выделил строки и сказал че хочешь, если ему надо, он шарится по всему проекту). Через обычный онлайн чат даже такого говна не добиться, он через пару сообщений забывает о чем ты с ним говорил, лол.

                Завязывай с вайб-кодингом, пока не поздно.

                • shikata_ga_naiOP
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  1 year ago

                  Хуйня этот ваш вайб кодинг, уже завязал, но опыт необычный, что интересно: движок то получился в итоге, лол.

                  • MrSugoma
                    link
                    fedilink
                    arrow-up
                    0
                    ·
                    1 year ago

                    Этот движок написан нейронкой?