• Изучаю ООП, как лучше обрабатывать форму?

    Lopar
    @Lopar
    системный администратор
    Это тоже не до конца ООП, но вам бы стоило пробовать двигаться от вашего кода в сторону соблюдения условий: "одна функция - одно действие" и "повторное использование".

    Посмотрите, я переписал.
    <?php
    
    class SomeClass
    {
        private string $title = '';
        private string $content = '';
        private array $error = [];
    
        public function create(): void
        {
            if (empty($this->error)) {
                $this->add();
            }
            echo $this->getStatus();
        }
    
        private function add(): void
        {
            $query = "insert into posts set title = :title, content = :content, created = now()";
            $stmt = $this->conn->prepare($query);
            $stmt->bindParam(":title", $this->title);
            $stmt->bindParam(":content", $this->content);
            if (!$stmt->execute()) {
                $this->error[] = 'Запись в базу не прошла!';
            }
        }
    
        public function setTitle(string $string): void
        {
            if (empty($string)) {
                $this->error[] = 'Поле title не заполнено!';
            } elseif (strlen($string) <= 5) {
                $this->error[] = 'Поле title меньше 5 символов!';
            } else {
                $this->title = htmlspecialchars(strip_tags($string));
            }
        }
    
        public function setContent(string $string): void
        {
            if (empty($string)) {
                $this->error[] = 'Поле content не заполнено!';
            } else {
                $this->content = htmlspecialchars(strip_tags($string));
            }
        }
    
        private function getStatus(): string
        {
            if (empty($this->error)) {
                return '<div class="alert alert-success">Успешно!</div>';
            }
            $string = '';
            foreach ($this->error as $error) {
                $string .= "<li>$error</li>";
            }
            return "<div class=\"alert alert-danger\"><ol>$string</ol></div>";
        }
    }


    И в коде вызов, например:
    ...
    if (isset($_GET['title']) && isset($_GET['text'])) {
        $c = new SomeClass();
        $c->setTitle($_GET['title']);
        $c->setContent($_GET['text']);
        $c->create;
    }
    ...
    Ответ написан
    Комментировать
  • Как правильно разместить на сайте полику конф-ии, обработку перс. данных и договор-оферту?

    Lopar
    @Lopar
    системный администратор
    Совершая оплату на сайте, вы соглашаетесь с нижеизложенным: сслыка, ссылка, ссылка.

    Заметным текстом на видном месте. Чтобы нельзя было придраться, что вы нарочно спрятали данную информацию от пользователя.
    Ответ написан
    2 комментария
  • Как правильно вести "документацию"/ заметки сис админу?

    Lopar
    @Lopar
    системный администратор
    Раз в несколько лет вы будете кочевать туда сюда. Блокнот, Обсидиан, Ноушен, Докувики, Эксель\Ворд, Блокнот в клеточку. Постоянно мигрируешь туда-сюда потому что задачи меняются, старые записи устаревают и удаляются, новые записи подпадают под новые требования - что-то для себя, что-то на отдел расшарить итд. Были пароли в Кипасс, не хватало шашечек, переехал на битварден, пока переезжал и привыкал, за пару тройку лет шашешчки подъехали и в кипасс, теперь думаешь про обратный переезд.

    Это я к чему, серебрянной пули нет, а с опытом меняются привычки. Просто ведите там где удобно и наплюйте на наши мнения.
    Ответ написан
    Комментировать
  • Почему не заходит на сайт на конкретном пк, хотя у других компов в сети есть доступ к ресурсу?

    Lopar
    @Lopar
    системный администратор
    На компьютере на сетевом адаптере "приватная" сеть не переключилась на "публичную"? Изменение малозаметное, различия в правилах файрволла местами монументальные.
    Ответ написан
    Комментировать
  • Как автоматически перзагружать модем резервного интернета на микротик?

    Lopar
    @Lopar
    системный администратор
    1. Делаете маршрут на определённый адрес со второго порта.
    2. Делаете нетвотч этого самого адреса.
    3. Скрипт на падение пинга: /system/routerboard/usb/power-reset duration=1d (порт укладывается на сутки)
    4. Скрипт на возврат пинга: /system/routerboard/usb/power-reset duration=1s (порт стартонёт через секунду)
    Ответ написан
  • Как запустить установку Windows 11 при том, что выполнены условия для установки (TPM, Secure Boot)?

    Lopar
    @Lopar
    системный администратор
    Установить Windows 10 и проведите обновление через центр обновлений до 11.
    Ответ написан
  • Как дать одноразовый доступ к аккаунту Microsoft?

    Lopar
    @Lopar
    системный администратор
    Это невозможно. Для активации какой либо подписки Microsoft передача учётных данных третьим лицам не требуется. Как только ты это сделал - твоя учётка больше не твоя, и ты включаешься в азартную игру: кто первый выкинет соперника из учётки. И ты реально можешь необратимо потерять всё.
    Ответ написан
  • Какой Stick-usb-modem купить для Mikrotik 3011?

    Lopar
    @Lopar
    системный администратор
    Строго для этих целей удобнее всего взять Mikrotik LTE, воткнуть в него симку и рулить собственным решением, чем играться с модемами. Плюс такого решения: можно вывести на улицу на стену\мачту и получить сигнал получше чем в стойке или металлическом шкафу.
    Ответ написан
  • Как отредактировать данные в php файлах?

    Lopar
    @Lopar
    системный администратор
    Если у вас полностью статичный сайт и вы не хотите усложнять, то ваша текущая реализация самая неубиваемая.

    Если хочется немного удобнее, но всё ещё просто, используйте для хранения цен csv файл, который удобно редактируется в Microsoft Excel, а дальше обрабатывается функцией fgetcsv.

    Если хочется поиграться с базами, но всё ещё не переусложнять, посмотрите на БД SQLite - это хорошая база под ваши задачи, при этом все данные она хранит в единственном файле, который удобно переносить в случае чего. Скорее всего вам с головой хватит.

    MySQL будет чрезмерной. Всё таки отдельное приложение, пусть и встречающееся буквально везде, но это лишние телодвижения и не очень тривиальные бекапы. Можно, но незачем.
    Ответ написан
    Комментировать
  • Как правильно написать SQL запрос?

    Lopar
    @Lopar
    системный администратор
    Во вложенном запросе не использовать WHERE вообще, и при этом использовать DISTINCT.
    select `id` from table_1 where `id` not in (select distinct `UID` from table_2)
    Ответ написан
    Комментировать
  • Как отправить pdf файл в соцсети?

    Lopar
    @Lopar
    системный администратор
    Комментировать
  • Как объеденить Ubuntu и windows 10 в локальную сеть?

    Lopar
    @Lopar
    системный администратор
    Возможно вы в ssh ищете ключ -b для систем с несколькими интерфейсами?

    -b bind_address
    Use bind_address on the local machine as the source address of the connection. Only useful on systems with more than one address.
    Ответ написан
    Комментировать
  • Временный доступ и особые права в Windows?

    Lopar
    @Lopar
    системный администратор
    Если не хочется заморачиваться, купите недорогой NAS, который имеет удобный интерфейс и удобно закроет все ваши задачи. Какая-нибудь простая модель, вроде Synology DS118.

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

    Для того, чтобы дети сами не запускали всё подряд, всего лишь стоит лишить пользователей административных прав, и запаролить административную учётную запись. Любое действие требующее повышения прав запросит явно пароль администратора, который можно подходить и вводить вручную. Если хочется заморочиться, в продаже можно найти дешевые токены (например Yubikey: недорого, практично), которые вставляются в USB и по нажатию кнопки заполняют поле ввода статической строкой. Один такой ключ у преподавателя, и пароли можно делать хоть очень сложными - лишь бы токен не потерять.

    В качестве контейнера для приложений может идеально подойти Sandboxie - open source разработка для решения именно этих задач.

    Варианты с поднятием домена указанные выше, без сомнений, решат все проблемы, но эти варианты получатся заметно дороже (сервер, серверная ОС, специалист, который всё настроит, или куча затраченного времени, если самостоятельно). А с бюджетами в системе образования, говорят, туго.
    Ответ написан
  • Как перезагрузить страницу после определённой даты?

    Lopar
    @Lopar
    системный администратор
    Да, это костыль и так лучше не делать, а придумать более правильное решение.
    Но это выполнимо.
    if (!isset($_GET['reloaded'])) {
      while(1) {
        sleep(5);
        if(time() > strtotime($date_end)) {
          header('Location:currentpage.php?reloaded=1');
          exit;
        }
      }
    }
    Ответ написан
    Комментировать
  • Как добавить onclik по айди кнопки?

    Lopar
    @Lopar
    системный администратор
    Сформулировано немного всрато, но если я верно понял, и тебе необходимо вызвать РНР через onClick, то без бутерброда с Javascript не выйдет.

    php:
    function php_func(){
    echo "Stay Safe";
    }

    javascript:
    function clickMe(){
    var result ="<?php php_func(); ?>"
    document.write(result);
    }

    html:
    <button onclick="clickMe()"> Click </button>

    В результате ID можно подставить или через Javascript, или даже без него, просто вызывая нужную функцию в PHP. Но это всё костылинг.
    Ответ написан
    Комментировать
  • Подойдут ли память и диск к этой материнке?

    Lopar
    @Lopar
    системный администратор
    В спеках написано, что память 2666 не поддерживается, а соседняя 2667 со звёздочкой и нюансами. Я бы не рисковал.
    Ответ написан
  • Почему не выводит элемент из существующего массива на php?

    Lopar
    @Lopar
    системный администратор
    Всё выводит. Ищи проблему на своей стороне.
    Ответ написан
    Комментировать
  • Сборка ПК для изучения фронтенда?

    Lopar
    @Lopar
    системный администратор
    Не слушайте геймеров в треде. :)
    Возьмите больше памяти: запас карман не тянет.
    Откажитесь от HDD: вы будете чаще иметь дело с россыпью мелких файлов, лучше ssd.
    Кулер это лишняя трата денег, боксовый отлично охладит ваши мизерные нагрузки.
    Блок на 600 это оверкилл, можно взять на 400 и ничего не потерять.

    Если бюджет позволяет, можно взять Intel Nuc, например. Холодный, бесшумный, крохотный. Но полноценный десктоп.
    Ответ написан
    Комментировать
  • Апгрейдить или продать ПК?

    Lopar
    @Lopar
    системный администратор
    Если вы не ставите цель играть в игры, то камня i7 3770, 16 озу и ssd вам вполне может хватить ещё лет на пять - старые процы были весьма толковыми. SSD вы потом сможете перенести в новый ПК, как накопите, камень с памятью.. если учитесь на программиста и вам зайдёт, рано или поздно захотите себе мини-серверок под домашнюю лабораторию, с этой задачей такое железо сможет справляться ещё годы вперёд.

    Если рассматривать с этой стороны и не слушать геймеров, говорящих про "низкие фпс" и "gta не пойдёт", это железо вполне может помочь пережить кризис, пока не подкопите на ПК. Мы живём в чудесное время, когда одного компа запросто может хватить на десяток лет минимум, если ты не геймер.
    Ответ написан
    1 комментарий
  • Стоит ли переходить на mikrotik 7?

    Lopar
    @Lopar
    системный администратор
    Если у вас офисные задачи без сложных разветвлённых конфигураций - обновляйтесь.
    РОС7 умеет всё, что умеет 6.49.
    Ответ написан
    Комментировать