• Как из preg_match получить ссылку на фото?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $pattern1 = "#<img[^>]+src=([\"'])([^>]+)\1[^>]*>#s";
    preg_match($pattern1, $file, $mathes1);
    var_dump($matches1[2]);
    Ответ написан
    Комментировать
  • Как зарегистрировать пользователя и не попасть в спам?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Разумеется форма перед отправкой проверочного письма рассылателю - проверяет regexp-валидность, MX-запись и существование такого E-Mail аккаунта (через SMTP-сессию).

    Существование всех E-Mail адресов, куда будет сделана рассылка - это да, это проблема. Но и их можно проверять (в SMTP-сессии), ценой быстроты самой отправки, конечно.

    Ну и разумеется сразу нужно бронировать побольше IP-адресов для SMTP-сервера, потому что с ними будут бороться (согласие на получение рассылок лично вам никто не давал, так?).
    Ответ написан
    1 комментарий
  • Mikrotik странная ситуация?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    В консоли Mikrotik сделать /export, и искать настройки для отваливающихся компьютеров (по IP ии MAC).

    Можно отключить IP-адрес 12-го порта, а на отвалившихся компьютерах сделать arp /d *, но явно "это жу-жу - не спроста"...
    Ответ написан
  • Почему тормозит веб сервер?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так вам же и Apache ругается
    WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
    , и Nginx ругается
    [mpm_prefork:error] [pid 70323] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting
    на одно и то же, а вы в упор не видите?

    База данных тоже ругается
    HINT: See server log for query details.\nCONTEXT: while rechecking updated tuple (4,118) in relation "oc_file_locks"
    , один запрос обновляет записи (и этим заблокировал таблицы), другие запросы ждут окончания блокировки и не могут дождаться.

    Кстати, в логах видны $1, $2 и т.д. Это вы заменили, или это база данных так запрос видит? Или это в коде ошибка, и в запрос вообще не подставляются нужные значения?
    И ещё, почему "lock" вместо кошерного SQL-ного `lock`?
    Ответ написан
    3 комментария
  • С чего начать изучение Phyton?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Начните с заучивания названия: Python.
    Ответ написан
  • Сайт не может обработать ошибка 500 php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Возможность коннекта к базе данных тоже нужно отслеживать:
    $link = mysqli_connect($host, $user, $pass, $name) or die("Can't connect to MySQL!");
    Ответ написан
  • Атака на http сервер Apache, Постоянные запросы с IP из сети, Как избавиться?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Судя по приведённым логам, ваш HTTP-сервер считает, что абсолютно все-все-все запросы предназачены ему. При этом он не отвечает 404-ой ошибкой на совершенно чужие имена доменов (например nanqiang.vip и httpbin.org). То есть у вас HTTP-сервер настроен в режиме "default server", когда запрос с абсолютно любым доменным именем считается приемлемым, и обрабатывается штатно (читаются файлы, генерируется содержимое, вся эта нагрузка на CPU).

    Вам нужно настроить Apache на одно-два-три и т.д. конкретных доменных имени, что бы Apache полноценно обслуживал только их. А на все прочие доменные имена он будет мгновенно отвечать ошибкой 404.

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

    P.S. Вполне возможно на вашем IP-адресе (очевидно на 80-ом порту) раньше работал proxy сервер. И те компьютеры в сети Интернет, которые были настроены на proxy на этом IP-адресе, до сих пор пытаются им пользоваться как proxy сервером. Правда полноценного хождения по WEB-сайтам через ваш сервер у них уже не получается, но они все равно пытаются (настройку пока не отменили). Остается терпеть... Или сменить IP-адрес. Или перейти на 443-ий порт.
    Ответ написан
    Комментировать
  • Почему перестает работать DNS?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    На 192.168.122.2 видимо нет DNS-а? Тогда после скрипта сделайте команды:
    iptables -I FORWARD -i enp2s0 -s 192.168.122.2,188.242.0.0/16 -p udp --dport 53 -j ACCEPT
    iptables -I FORWARD -i enp2s0 -s 192.168.122.2,188.242.0.0/16 -p tcp --dport 53 -j ACCEPT


    Если сработает и нужно вставить эти команды в скрипт - поменяйте оба "-I FORWARD" на "-A FORWARD".

    P.S. Или удалите из скрипта строки с "--dport 53".
    Ответ написан
  • Как удалить до определенного символа и после с помощью регулярного выражения в php?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $link = "<script src=\"https://yandex.ru/path\">";
    if (preg_match("/<script[^>]*? src=\"([^\">]+)\"[^>]*?>/si", $link, $matches))
    {
        echo("Link: ".$matches[1]."\n");
    }
    Ответ написан
    Комментировать
  • Как мне одним скриптом обрабатывать разные URL?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Как правило администрирование/настройку сервисов (Apach и Nginx - это сервисы HTTP) отделяют от простого программирования (и не лазят в конфиги сервисов на каждый чих).

    Поэтому самое простое - создать файлы example.com/info.php, example.com/profile/index.php и example.com/admin/panel/index.php с единственной строкой
    <?php require($_SERVER['DOCUMENT_ROOT']."/scrypt.php"); ?>
    Ответ написан
    Комментировать
  • PHP ругается на ошибку в Curl, куда копать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    $destiation_dir = realpath($_FILES['file']['tmp_name']);
    Ответ написан
    2 комментария
  • Как сделать MySql выборку из несколькиз таблиц?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    SELECT * FROM Resources AS Models
    LEFT JOIN Resources AS Designs ON (Designs.parent_id = Models.id AND Designs.template_id = id шаблона дизайна модели)
    LEFT JOIN Resources AS Batches ON (Batches.parent_id = Designs.id AND Batches.template_id = id шаблона серии дизайна)
    WHERE Models.parent_id IS NULL
    AND Designs.id IS NOT NULL
    AND Batches.id IS NOT NULL


    Теперь приклеивайте к этому запросу JOIN-ы из переменных.
    Ответ написан
  • Будет ли правильный результат Date.now(), если у пользователя установлена некорректная дата и время?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Некорректный вопрос. Потому что не описано, КАКОЕ ИМЕННО время считается некорректным. На планете Земля имеется 24 часовых пояса, в каждом время отличается, и везде оно будет совершенно корректно в пределах своего часового пояса. Или имеется ввиду другой день недели, или другой месяц, или даже другой год? Так даже в этом случае число будет корректным (цифра - она и есть цифра), просто оно не будет соответствовать реальному времени в реальном часовом поясе.

    P.S. А вы собираетесь полагаться на это число как на идеально правильное и точное?
    Ответ написан
    Комментировать
  • Локальный адрес ISS - как создать?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    На каждом компьютере с Windows дописываете в файл C:\Windows\system32\drivers\etc\hosts строку
    11.22.33.44 baza.site-name.ru
    соответственно поменяв IP-адрес на адрес вашего сервера, а site-name.ru на реальное имя вашего сайта.

    И не забудьте в IIS (он именно так называется) тоже прописать ваше имя сайта, что бы IIS (повторюсь, он именно так называется) знал, что baza.site-name.ru находится у него, в такой-то директории.

    Это самый короткий путь, без настроек собственного DNS-а.
    Ответ написан
  • Как сделать отправку запроса данных с двух форм?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Ну хотя-бы так:
    if (!empty($_POST['name']) AND !empty($_POST['message']))
    {
        $send = ....;
        header("Location: /");
    }
    else if (!empty($_POST['desc']) AND !empty($_POST['file']))
    {
        $send2 = ....;
    }
    Ответ написан
    Комментировать
  • Remote side sent disconnect message type 2 protocol error как исправить?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Видимо нужно обновить PUTTY из-за этого бага.
    Ответ написан
    Комментировать
  • Как в LIKE настроить границу поиска по шаблону?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    `f` LIKE '3 %' OR `f` LIKE '% 3 %' OR `f` LIKE '% 3'
    Ответ написан
    Комментировать
  • Как понять рекурсию в коде ниже?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Первый вопрос: потому что срабатывает условие n <= 0, и возвращается 0.

    Второй вопрос: потому что число 2 в массиве находится в нулевом (1 - 1 = #0) элементе массива, именно оно суммируется с финальным 0, и эта сумма возвращается.

    Третий вопрос: получается стартовый элемент 3 - 1 = #2, значит суммируются числа 4 + 3 + 2 + 0 = 9, потому что именно число 4 находится во #2-ом элементе массива.
    Ответ написан
    Комментировать
  • Почему не выполняется условие в JavaScript?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Так напишите console.log(result == "username-error");, и увидите результат этой проверки. И лучше делать console.dir(result);, тогда будет видна настоящая структура result, может там вообще массив сидит...
    Ответ написан
    Комментировать
  • Почему ошибка 520 Cloudflare при обращении по http, хотя по правилам Nginx настроен редирект на https?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    У вас прописан только перманентный редирект всех HTTP запросов на HTTPS адрес сайта. 520-ая ошибка указывает на непонятный ответ вашего сервера Cloudflare-вскому серверу, возможно как раз из-за самоподписанного (неудостоверенного) сертификата. Настройте логи Nginx-а, и изучайте, что он там пишет... Сертификат можно у Let's Encrypt бесплатно взять.
    Ответ написан
    Комментировать