• Нужно ли в таких случаях делать защиту от инъекций?

    Fockker
    @Fockker Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нужно, разумеется.
    Это как в одном пошлом анекдоте про поручика Ржевского,
    - Запрос есть? Значит нужно.

    Если кажется, что защита слишком сложная, то либо вариант предложенный Сергей delphinpro в комментариях,
    $stmt = mysqli_prepare($connect, "INSERT INTO `bd` (`id`, `name`, `tel`) VALUES (NULL, ?, ?)");
    mysqli_stmt_execute($stmt, [$_POST['name'],  $_POST['tel']]);

    Либо, поскольку это ещё не везде работает, пишется маленькая функция на 5 строк, и кладётся в файл, где прописано соединение с БД
    function prepared_query($mysqli, $sql, $params, $types = "")
    {
        $types = $types ?: str_repeat("s", count($params));
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param($types, ...$params);
        $stmt->execute();
        return $stmt;
    }

    И дальше просто
    $sql = "INSERT INTO `bd` (`name`, `tel`) VALUES (?,?)";
    prepared_query($connect, $sql, [$_POST['name'], $_POST['tel']]);

    Просто, быстро, аккуратно, безопасно
    Ответ написан
    Комментировать
  • Нужно ли выполнять асинхронные запросы чтоб ускорить выполнение кода на PHP?

    Fockker
    @Fockker Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Когда я вижу такие вопросы, мне хочется плакать.
    "У меня микроскоп показывает только грязь на пальцах. У меня получится посмотреть вакуоли, если я приделаю к микроскопу ветряной двигатель?"

    Если код работает медленно, то надо не выдумывать какие-то фантазии про асинхронные запросы, а ускорить выполнение кода. Который должен выполняться максимум за 0.008 секунды
    Ответ написан
    2 комментария
  • Как сделать появление второго select при выборе значения в первом html\php?

    Adamos
    @Adamos
    А РНР здесь и ни при чем. Для этого нужен javascript.
    Такая логика называется chained select. Для нее должен работать AJAX-запрос к серверу: в запросе город, в ответе - список серверов. Либо, если список не слишком велик, эти данные можно сразу включить в страницу и просто выбирать нужные по событию изменения первого select.
    Ответ написан
    5 комментариев
  • Как загрузить файл на сайт?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Ответ написан
    Комментировать
  • Какой язык программирования учить системному администратору?

    @Akina
    Сетевой и системный админ, SQL-программист.
    какой язык более универсальный для системного/сетевого администратора?

    Shell scripting - обязательно.
    А также любые другие языки, входящие в штатную поставку обслуживаемых ОС и ПО, включая встроенное ПО оборудования - по возможности и желанию. Но минимальное понимание - обязательно.

    К примеру написать бота в телеграмм, организовать вывод показателей с серверов на сайт, и запилить минимальное приложение для мониторинга под windows/android, не заморачиваясь над фронт-ендом.

    Вообще-то системный (тем более сетевой) администратор такой фигнёй не занимается.
    Ответ написан
    Комментировать
  • Логические операторы PHP: and, or vs &&, ||?

    Fockker
    @Fockker Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Поскольку у && приоритет выше, то традиционно выбирают его, чтобы потом не было неожиданностей, как во втором примере.

    Я, собственно, не вижу никакого удобства во втором случае.
    Код должен читаться на лету, без необходимости вчитываться и производить логические вычисления в голове с учётом приоритета выполнения операторов. А здесь мы видим эталонный говнокод, который надо переписать на
    $x = is_good();
    if($x and $y>0)

    Я оставил здесь AND для наглядности, но по-хорошему я бы заменил на &&, просто чтобы следовать единому стилю.
    Ответ написан
    1 комментарий
  • Насколько индекс ускоряет выборку с условием-неравенством?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Будет ли этот запрос быстрее работать, если для столбца `time` есть индекс?
    Это покажет EXPLAIN, а ещё лучше - само выполнение запроса с индексом и без него. Скорее всего - будет.

    Вообще насколько целесообразно делать индексы на все столбцы, которые есть в условии выборки и в которых много уникальных значений?
    В этом и заключается смысл индексации.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы если человек заходил с одного бразера - показывалось одно, а с другого браузера - другое?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Давайте сделаем что-нибудь полезное. К примеру, определим, какой браузер использует тот, кто смотрит в данный момент нашу страницу. Для этого мы проверим строку с именем браузера, посылаемую нам в HTTP-запросе. Эта информация хранится в переменной. Переменные в PHP всегда предваряются знаком доллара. Интересующая нас в данный момент переменная называется $_SERVER['HTTP_USER_AGENT'].

    https://www.php.net/manual/ru/tutorial.useful.php
    Ответ написан
    Комментировать
  • Как делают прогресс выполнения фоновой задачи в очередях и отображают это клиенту на сайте (php,python)?

    @bacon
    варианты
    1. веб сокеты - постоянное двухстороннее соединение, можно в реальном времени передавать информацию о процессе
    2. первый запрос - создать задачу, в ответе id задачи, далее периодические запросы с этим id, в ответах так же информация о процессе
    Ответ написан
    Комментировать
  • Отслеживание новых записей в бд в реальном времени?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Самое простое - периодический запрос клиентом обновлённой информации.
    Более сложное - websocket + вызов скрипта из БД по триггеру AFTER INSERT.
    Ответ написан
  • Как защитить видео на сайте?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    Делал сто лет назад проект с видеоуроками. На Амазоне в S3 лежали файлы, раздавались в плеер через CloudFront.

    Перед каждым воспроизведением генерилась уникальная ссылка с подписью, которая привязана ко времени и «живёт» недолго – см. Signed URLs

    Так что если решили вопрос с оплатой Амазона, я бы рекомендовал через них реализовать.

    Или посмотрите сервис Kinescope.ru – они предлагают услугу доставки контента и его защиты.
    Ответ написан
    1 комментарий
  • Почему не работает код в firefox?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вам с бэка возвращается не JSON. Ищите ошибке на бэке, firefox тут не при чём.
    Ответ написан
    Комментировать
  • Почему разрешение страницы сайта меньше, чем монитора?

    Lynn
    @Lynn
    nginx, js, css
    Потому что у вас настроено увеличение либо в браузере либо в ОС
    Ответ написан
    Комментировать
  • Почему не удаётся подключиться к PhpMyAdmin?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    phpmyadmin - это не база, а только панель управления базой.
    Тебе же нужно узнать адрес и порт mysql, и использовать их.

    PS:
    1. Лучше пересмотри свою идею использования DbUtils и посмотри, как в других проектах работают с базой. На том же metanit есть примеры работы с Dapper и EF Core. Иначе он у тебя превратится со временем в сотню утилит и твой код в лучшем случае будет выглядеть как какая-то процедурщина а-ля 1С, а в худшем случае - как спагетти. И это не говоря об эффективности.
    2. Вместо поделия Oracle под названием MySql.Data лучше использовать библиотеку MySqlConnector (причины тут: https://mysqlconnector.net/)
    Ответ написан
    1 комментарий
  • Доказано ли, и можно ли сжать произвольные данные до 20 байтов к примеру?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Допустим, существует некий алгоритм, который преобразует последовательность X длины M в последовательность Y, причём существует обратное преобразование. Неважно, что это за алгоритм конкретно - сжатие, создание "зерна" и пр. Но очевидно, что:

    1. Количество вариантов последовательности X составляет K в степени M, где K - размер словаря, т.е. количество возможных различимых значений одного элемента последовательности X. В случае байтовой последовательности это байт, т.е. K=256.

    2. Каждая последовательность X после преобразования даёт последовательность Y, причём две разные последовательности X дают разные последовательности Y.

    Соответственно количество возможных последовательностей Y равно количеству возможных последовательностей X. И соответственно если существует хотя бы одна последовательность Y короче последовательности X, то существует хотя бы одна последовательность Y длиннее последовательности X.

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

    Что же до "зерна", которое разворачивается в гигабайты - во-первых, количество финальных миров определяется количеством значений "зерна", то есть вовсе даже не такое бесконечно большое, как кажется, во-вторых, созданный образ мира содержит значительное число повторяющихся элементов, а создание копий - это немножко не декомпрессия.
    Ответ написан
    Комментировать
  • Как отправить запрос с php сервера на python север requests?

    @bacon
    python http сервер
    ничем не отличается от <ЯП> http сервер. Ну и давай тут все поугадывают что такое "+" в " с https(основной сайт) запросить https(сайт в интернете) +" и что такое "-" в с "https(основной сайт) запросить питона -"
    Ответ написан
    3 комментария
  • Не подключается .CSS к html?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Скобка закрывающая
    Скриншот кода удалён модератором.
    Ответ написан
    5 комментариев
  • Зачем надо закрывать курсор при работе с БД?

    @mayton2019
    Bigdata Engineer
    Дело в том что курсор может потреблять ресурсы. Например вы захотели взять первые 10 строк из 10000000 выборки но предварительно отсортировали. Выбрали 10 строк и не сделали финализирующие протокольные действия в Python. База данных будет удерживать в памяти алгоритмы и структуры данных для снапшота результата этого запроса до тех пор пока не придет явный CLOSE с вашей стороны либо интеллекуальный драйвер который еще и обладает логикой уборки мусора сам не догадается что Statement уже вышел из scope вашего использования и может быть удалён GC.

    Я был свидетелем ситуации когда крупное ent-приложение Java/Oracle переполняло память из-за неверной обработки Exception и плодила много незакрытых курсоров в БД. Java от этого не сильно страдала (GC всё убирал) но страдал Oracle. Потому что уборка происходила слишком поздно. Пофиксилось тогда переписыванием с try на try-with-resources.

    Поэтому если вы неряшливо обращаетесь с курсорами (явными и неявными (обычный select к примеру может прождать неявный курсор)) то не ваше приложение а база данных почувствует себя плохо. Как быстро и какие ошибки вы будете получать - зависит от настроек вашей БД.
    Ответ написан
    Комментировать
  • Как через аргумент функции, передать 'число' с ведущим нулём?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    число 0755, волшебным образом, превращается в 493
    Никаким не волшебным, а самым обычным и описанным в документации.

    Обратите внимание, что аргумент permissions необходимо задавать в виде восьмеричного числа (первой цифрой должен быть ноль).
    https://www.php.net/manual/ru/function.mkdir.php
    Ответ написан
  • Почему PHP используется в не HighLoad приложениях?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Этот один человек профан и глупец, а PHP простой в изучении и использовании язык, который применяется в проектах с любым уровнем нагрузок.
    Ответ написан
    2 комментария