• Как понять уязвим запрос к бд или нет?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Понять очень просто.
    Если в строке запроса есть переменные РНР, то инъекция теоретически возможна
    Если в строке запроса нет переменных, то есть она представляет собой константное значение, то тут в принципе не может быть инъекции.
    В запросе "SELECT * FROM post_api WHERE `currency` = ?" переменных нет. Значит инъекции тоже.
    А подготовленный запрос или нет - это дело десятое.
    Ответ написан
    4 комментария
  • Как сделать проверку на номер через смс?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Например, слать ему смс с кодом подтверждения.
    Ответ написан
    2 комментария
  • В чём суть шутки про ноги в С/С++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    "Выстрелить себе в ногу" - это идиома англоязычного мира, означающая причинение себе вреда необдуманными действиями. Языки C и C++ достаточно низкоуровневые языки, чтобы на них можно было делать опасные вещи. При этом первый вообще никак не контролирует действия программиста и позволяет написать любую ересь, а у второго такое количество тёмных уголков, в которых можно ересь сделать случайно, что не все знают даже спецы с десятилетиями опыта. Эти два совокупных фактора превращают программирование на Сях и Плюсах в изготовление приспособлений для стрельбы по собственным ногам.
    Ответ написан
    Комментировать
  • Почему Mysql выдает ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Английским по розовому же написано:
    Write falied: no space left on device
    Ответ написан
    3 комментария
  • Что из себя представляет интернет соединение?

    nowm
    @nowm
    Самая ближайшая аналогия: вы открываете чат с другом и болтаете минут 20. Несмотря на то, что вы отправляли друг другу много сообщений, все они отправлялись в рамках одного разговора, и вы их считатете связанными. Они были отправлены в рамках этого непрерывного соединения-разговора. «Под капотом» в это время может происходить много разных вещей. Например, чтобы написать сообщение, нужно достать телефон из кармана, разблокировать экран, открыть приложение-чат, выбрать собеседника, кликнуть на поле ввода сообщения, по-очереди нажимать на буквы экранной клавиатуры. Телефон, тоже где-то там под капотом делает много вещей, чтобы обеспечить вам возможность разговора с другом. Но эти детали вас не отвлекают, и вы считаете, что вы просто разговариваете с другом. У вас непрерывное 20-минутное соединение-разговор, даже если вы за эти 20 минут несколько раз доставали телефон и клали обратно.

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

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Никак не переключить, Laravel к вашей версии PHP не имеет никакого отношения и управлять ей не может.
    Версия переключается в веб-сервере, о котором в вопросе вы не упомянули вообще. Загуглите "%ваш веб-сервер% %ваша операционная система% change PHP version".
    Ответ написан
    1 комментарий
  • Как получать данные DOM быстрее?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Выбирайте:
    1. на бэке отдавать страницу сразу с контентом второй. В скрытом div'е или в теге <script type="template"> чтобы потом работать с содержанием в JS
    2. запрос отправлять как можно раньше, например из головы страницы, не дожидаясь догрузки всего HTML и остальных скриптов
    Ответ написан
    Комментировать
  • Resource: что из себя представляю потоки в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я значительно переработал этот ответ, поскольку мне самому не нравились некоторые моменты плюс я обратил внимание на конкретные примеры из вопроса.

    В первую очередь, не надо путать потоки как принцип, абстракцию, и потоки как конкретную реализацию этого принципа в виде механизма потоков в РНР. При этом даже в этой конкретной реализации есть много нюансов, которые не всегда очевидны. Скажем, врапперы в РНР можно разделить на встроенные и пользовательские. Причем даже встроенные могут значительно отличаться по своей реализации.

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

    Вот даже здесь, поскольку fopen работает поверх абстракции, нельзя говорить о едином подходе.
    Если у нас самый простой случай - локальный файл - то РНР оборачивает функции для работы с файлами языка С в свою собственную абстракцию. Но ниже - на уровне этих самых функций языка С - никаких потоков нет. Есть обращение к функциям операционной системы, которые просто позволяют прочитать выбранный кусок файла.
    Тут никаких вопросов нет, всё честно - если мы прочитали из файла 5 килобайт - значит потратили ровно 5 килобайт памяти.
    Но работаем мы с файлом не считывая его весь в память не потому что поток, а потому что так устроена файловая система. А поток этой возможностью только пользуется.

    Если же мы открываем не файл, а URL, то РНР начинает извращаться, пытаясь предоставить те же самые инструменты, какие мы используем для работы с файлами, для доступа к ресурсам совершенно другого типа.
    И здесь возможны нюансы. Я не знаю, как реализован HTTP wrapper, но в теории HTTP позволяет чтение произвольного объема данных через заголовок Range:. То есть РНР вполне может читать и из НТТР кусками, а не целиком.

    В общем поток - это абстракция. Подход. Интерфейс. Способ работы с массивом информации не забирая её всю в память.
    При этом реализация конкретного инструмента, использующего этот подход, может быть совершенно самостоятельной, никак с другими не связанной. Мне кажется, что именно этот момент является для вас камнем преткновения: на техническом уровне это совсем не обязательно одни и те же потоки. Но вполне могут быть.
    При этом важно не смешивать сам поток и его получатель (получатель вполне может накапливать всю информацию из потока).

    А упомянутый в вопросе PSR-7 вообще никакого отношения к потокам в РНР не имеет. Это совершенно отдельная реализация принципа потоков, которая не имеет отношения к потокам в РНР.
    Ответ написан
    Комментировать
  • Почему возникает ошибка SQLSTATE[42000] при запросе обновления в базе данных?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Потому что бессмысленный говнокод.
    У меня племянница трёхлетняя так дом строит: деревья, мишку плюшевого, колеса от грузовика - всё в дело идёт.
    Но ей хотя бы ума хватает не класть сверху мороженое. А тут всё вперемешку - SQL кривой, prepare используется там где не нужно, и не используется где нужно, каким-то боком mysqli...

    Переменные не пишут прямо в запрос. А передают отдельно. Потому что именно от этого все ошибки и происходят.
    И как раз для этого и используют PDO, с pepare и execute

    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dbh = new PDO('mysql:dbname=database;host=localhost;charset=$charset', 'usr', 'password', $options);
    
    $stmt = $dbh->prepare("UPDATE posts SET content = ? WHERE id = ?");
    $stmt->execute([$content,$id]);
    echo "Пост - " . $id . PHP_EOL;
    Ответ написан
    Комментировать
  • Не получается внести данные с формы в бд, хелпанете?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ответ написан
    Комментировать
  • Как при входе на сайт (загрузка страницы) записать единичку в файл?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Учите функцию file_put_contents()

    file_put_contents("я_лентяй.txt", "1", FILE_APPEND);
    Ответ написан
    Комментировать
  • Как сделать файл авто перескачиваемым после его обновления?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    самое тупое решение
    <script src="/path/file.js?t=<?= filemtime($_SERVER['DOCUMENT_ROOT'].'/path/file.js') ?>">
    Ответ написан
    9 комментариев
  • Почему данные заказа не отправляются в базу данных?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Потому что вы вообще никак не отреагировали на те ответы, которые вам дали в прошлый раз на этот же самый вопрос.
    Вам написали, как правильно выполнять запросы. Вы это сделали?
    Вам написали, какие действия выполнять, если код не работает. Вы их выполнили?
    Вы так и планируете ходить на Хабр каждый раз, когда код не работает? Вот прямо серьёзно? Это, по-вашему, именно то, чем занимаются программисты?

    Пожалуйста, прочитайте ответы, которые вам давали на этот вопрос в прошлый раз и начните уже им следовать.
    Иначе программирование для вас так и останется игрой в прятки в темноте - "ой, что-то написала, не работает! Ой, что-то другое написала - работает!".

    К тому что написано в предыдущем ответе надо добавить только одно: перед
    new mysqli(...);
    надо всегда писать
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    чтобы база данных сама сообщала, почему не может выполнить запрос. Если дело именно в нём.
    Ответ написан
  • Почему выдает ошибку при загрузке фотографии?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    То, что папка images находится в папке с product.php, не имеет вообще никакого значения.
    product.php не имеет отношения к работе веб-сервера. из неё просто читается код класса.

    При этом путь images/ является относительным. То есть, в зависимости от точки входа может вести в совершенно разные места.
    Именно поэтому все пути всегда должны быть абсолютными. Пусть даже и с помощью костыля __DIR__
    Ответ написан
    2 комментария
  • Как продолжить цепь запросов в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если отбросить всю не относящуюся к вопросу чепуху, типа каких-то "внутренних запросов"(?!), то ответ сводится цепочке вызовов.
    Ответ написан
    Комментировать
  • Почему большие проекты типа apple.com используют css переменные а не scss/less etc?

    vabka
    @vabka Куратор тега Веб-разработка
    1. Неизвестно, что там apple.com использует
    2. CSS переменные не исключают использование переменных препроцессора
    3. CSS переменные можно менять в рантайме, в отличие от переменных препроцессора.
    Ответ написан
    1 комментарий
  • Какие есть альтернативные способы представления чисел в памяти?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    Да вагон таких попыток. GMP и аналоги представляют числа в виде дробей, количество знаков в числителе и знаменателе которых ограничено только объемом оперативки

    Программы символьной математики типа Maple, Maxima, Octave умеют хранить выражение в виде аналитической записи, то есть, умеют представлять всякие иррациональности точно (типа sqrt(2) он так и хранят как sqrt(2))

    Для практических инженерных вычислений, такая точность, очевидно, не нужна - там и float и double, как правило, хватает.
    Ответ написан
    1 комментарий
  • Что лучше использовать .NET Core или Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Лучше использовать то, что лучше знаете.
    Ответ написан
    Комментировать
  • Как написать код в php чтобы он определял цвет светофора в конкретное время используя инпуты?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Любую задачу, если она сразу не решается в голове, надо решать на бумажке с ручкой
    причем без алгоритмов, тупо перебором.
    рисуем шкалу времени, на ней сигналы светофора по очереди, и дальше берем даты внутри этой шкалы и тупо руками смотрим, какой сигнал.

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

    Дерзайте.
    Ответ написан
    Комментировать
  • Что такое API в PHP?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    грубо говоря, html странички - для живых юзеров, которые по ним ходят, жмут кнопки и читают буквы
    api - для служб, которые ходят друг к другу, читают информацию в виде массивов или объектов (json, xml, и др.) и собственно взаимодействуют посредством вызовов api

    UI - user interface
    api - advanced program interface
    Ответ написан
    Комментировать