• Curl возвращает 204 No Content?

    maxya-zp
    @maxya-zp Автор вопроса
    Потомственный лесоруб
    Решилось всё добавлением хедера user-agent
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36");


    Спасибо Виталий Артемьев

    Сделал запрос на webhook.site из консоли и php и увидел что консоль отдаёт заголовок user-agent curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.87.0 OpenSSL/1.0.1e-fips zlib/1.2.3, а php нет.
    Ответ написан
    Комментировать
  • Curl возвращает 204 No Content?

    @humoured
    Вы всё на свете найдёте в коробке с карандашами
    Нужно добавить CURLOPT_POST => true
    Ответ написан
    3 комментария
  • Как в php сравнить два огромных txt файла до 100гб, удалив дубликаты?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Файлы надо отсортировать. А потом это стандартная задача слияния отсортированных списков (читаете по одной строке из файла, меньшую по алфавитному порядку записываете в ответ, читаете из ее файла следующую строку. Если 2 строки одинаковые - читайте следующую строку в каждом файле. Если файл закончился, считайте что там бесконечно большая лексикографически строка).

    Сортировка очень больших файлов - тоже стандартная тема. Лучше всего, наверно, подойдет radix sort. Правда, нужно будет свободного места на диске чтобы копии файлов тоже помещались, да лучше с запасом. Тут надо будет 3 раза (или какая там у вас длина строки) прочитать файл. Прочитанные строки надо распихивать по 256 (или сколько там символов различных может быть) файлам. Потом все эти файлы надо собрать воедино в нужном порядке.

    Надо только хорошо порыться в документации - нужны функции php которые читают файл построчно и не грузят его весь целиком в память. Если, конечно, у вас не ~128гб оперативки. Тогда лучше каждый файл загрузить в память целиком и сортировать quick sort'ом.
    Ответ написан
    Комментировать
  • Хочу изучить внутренности php, какую литературу посоветуете?

    iMedved2009
    @iMedved2009
    Не люблю людей
    Ответ написан
    Комментировать
  • Почему не работают фасады в laravel phpunit?

    @qvisn00
    В начале метода setUp неободимо вызвать parent:setUp() и все заработает
    Ответ написан
    2 комментария
  • Строка из БД как условие сравнения в if?

    v3shin
    @v3shin
    Веб-шаман
    Можно как-то так, в зависимости от вашего кода и нужд:
    if ($row['compareSign'] === '<=') {
        return $a <= $b;
    } elseif ($row['compareSign'] === '>') {
        return $a > $b;
    }
    Ответ написан
    Комментировать
  • Что нужно исправить чтобы все работало?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    К сожалению друзей и знакомых нет в этой сфере нет и помочь некому.
    Это не так. У вас есть как минимум 2 друга (как минимум в данной задаче) - интерпретатор php и гугл. Первый знает что происходит, а второй как это исправить.

    вдруг у кого получится сделать так, чтобы все работало
    Вдруг ничего не бывает.
    1) Читаете ошибку, если все понятно - исправляете.
    2) Если не понятно - гуглите.
    3) Если и так не помогло - тогда по конкретной проблеме пишете сюда.
    4) Разбираетесь что надо сделать, правите
    5) При возникновении ошибки повторяете с п. 1 по п. 4.
    Ответ написан
    Комментировать
  • Функция php setcookie то работает, что нет?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Варианта 2: Пробел/перенос строки после ?>, или файл записанный с BOM. Первое лечится удалением лишних символов, второе через редактор кода - файл-кодировка-утф без бом.
    Ответ написан
    Комментировать
  • Как убрать вывод нуля при $amount = 1?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Округление дело такое. При коэффециенте 0.25 как ни округляй, будет 0 для $amount < 2

    refactor
    $rand = mt_rand(1, 1000);
    $bad = '...';
    
    if ($rand < 150) {
        $k = 1;
        $message = '$ (x0) ❌';
    } elseif ($rand < 300) {
        $k = 0.75;
        $message = "$ (x0.25) $bad";
    } elseif ($rand < 450) {
        $k = 0.5;
        $message = "$ (x0.5) $bad";
    } elseif ($rand < 600) {
        $k = 0.25;
        $message = "$ (x0.75) $bad";
    }
    
    $delta = round($amount * k);
    $res = $user->balance - $delta;
    $restxt = 'Вы проиграли ' . number_format($delta, 0, '', '.') . $message;


    Если "бизнес-логика" настолько странная, что и округлять в меньшую сторону, и сделать исключение для 1 и только для неё, то
    $delta = $amount === 1 ? max(1, floor($amount * k)) : floor($amount * $k);
    но следующий вопрос будет «а вот 2 при $k === 0.25 тоже округляется до 0»
    Ответ написан
    1 комментарий
  • Почему поступает пустой запрос, и выдает ошибку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Бросайте вы эти видеоуроки, они вас плохому научат.
    1. Не надо напрямую подставлять переменные в запрос, для этого есть плейсхолдеры. Читать про SQL Injection.
    2. Не надо руками ловить ошибки mysqli. Надо устанавливать правильные опции при подключении. Читать https://habr.com/ru/post/662523/
    3. Если уж вы ловите ошибки самостоятельно, то выводите полный текст ошибки, а не просто паническое "Ой, что-то случилось!".
    4. Не надо хранить в своей базе данные кредитных карт клиентов, да ещё и вместе с CVV. Учитывая пункт 1, это всё равно, что писать их на заборе. Читать про PCI DSS.
    Ответ написан
    4 комментария
  • Как правильно объединить две таблицы?

    @alexalexes
    в гугле решения найти не смог

    sql join

    redbeanphp

    Научитесь сначала использовать базовый набор функций работы с СУБД:
    либо mysqli, либо PDO. Не нужно использовать ORM-ки на начальном этапе обучения.
    Ответ написан
    1 комментарий
  • Как упорядочить id записей в MySQL?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если речь об автоинкрементном поле-первичном ключе, то забудь про сию хотелку, и чем скорее, тем лучше.

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

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

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Согласится на низкооплачиваемую стажировку, получить год опыта, а заодно подтянуть себя с просто верстальщика до фронтендера.
    Ответ написан
    Комментировать
  • Как исправить ошибку Parse error: syntax error, unexpected 'if' (T_IF) in C:\OSPanel\domains\Game.loc\logreg.php on line 29?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    • Конструкция else по определению не принимает никаких дополнительных проверок.
    • Результат isset бессмысленно сравнивать со строкой.
    • В isset($dt[`password1`] не закрыта скобка.
    • Вместо бэктиков нужно использовать нормальные кавычки.


    Вооружитесь учебником и PhpStorm, тогда никакие ошибки парсинга вам не будут страшны.

    Олдскулы

    $type = array_key_exists('type', $_GET) ? $_GET['type'] : null;
    
    if ($type === 'logging') {
        if (isset($dt['login'], $dt['password'])) {
        }
    } elseif ($type === 'register') {
        if (isset($dt['login'], $dt['password1'], $dt['password2'], $dt['nickname']))) {
        }
    }
    
    // Вместо if-elseif может быть использован switch, если логика позволяет и читаемость не будет страдать


    Современность
    $type = $_GET['type'] ?? null;
    Ответ написан
    1 комментарий
  • Как соотнести каждый элемент строки массива с каждым элементом других строк этого массива?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    На пхп из коробки сложновато, вы говорите об операции "product" которая является частью комбинаторики.

    Вот у меня класс есть, где я это из python портировал:
    https://github.com/6562680/support/blob/main/src/X...

    Но мне кажется, вам будет сложно разобрать что там написано поэтому я вам простой код напишу под вашу задачу:
    $arr = [
    	['aa', 'bb', 'cc'],
    	['dd', 'ee', 'ff', 'gg'],
    	['hh', 'ii'],
    ];
    
    function _array_product(array $pools) {
        $result = [ [] ];
    
        foreach ( $pools as $pool ) {
            $resultCurrent = [];
    
            foreach ( $result as $x ) {
                foreach ( $pool as $y ) {
                    $resultCurrent[] = array_merge($x, [ $y ]);
                }
            }
    
            $result = $resultCurrent;
        }
    
        foreach ( $result as $item ) {
            yield $item;
        }
    }
    
    foreach (_array_product($arr) as $val) {
    	var_dump($val);
    }
    Ответ написан
    2 комментария
  • Как исправить ошибку 500 Internal Server Error?

    kotomyava
    @kotomyava
    Системный администратор
    В таком виде на вопрос не ответить. Причина может быть любой.
    Надо смотреть логи веб сервера, на предмет того, что собственно вызывает ошибку. Дальше решать найденную проблему.
    Ответ написан
    Комментировать
  • Как правильно сделать запрос в бд?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Я даже не представляю, сколько раз на этот запрос здесь уже отвечали. Но разве ж тут что найдёшь...
    WHERE date BETWEEN '2021-10-01 00:00:00' and '2021-10-30 23:59:59'
    Ответ написан
    8 комментариев
  • Как вывести все остальные поля при операции GROUP BY?

    @Akina
    Сетевой и системный админ, SQL-программист.
    WITH cte AS (
        SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY score DESC) rn
        FROM source_table
    )
    SELECT *
    FROM cte
    WHERE rn = 1
    -- ORDER BY score DESC LIMIT nnn
    ;
    Ответ написан
    Комментировать
  • Не могу выполнить sql INSERT yii2 mssql, как правильно составить INSERT?

    star52
    @star52
    Программист
    Ну так у вас в запросе на вставку ни одна строка получается, а 2 строки по два столбца.
    Во вторых у вас ' после Test.dbo.drivers , так надо?

    Test.dbo.drivers и Test.dbo.sprCar_Info каким образом соотносятся? Вы пытаетесь из двух разных таблиц взять по 2 столбца и соединить в третей Test.dbo.tb_info?

    Вот так, на месте знаков вопроса поставьте поле по которому можно объединить таблицы
    INSERT INTO  Test.dbo.tb_info (Driverid,CarCode,CarNumber,CarMark)
    SELECT 
    d.Driverid,d.CarCode, ci.CarNumber, ci.CarMark
    FROM
        Test.dbo.drivers d
        INNER JOIN Test.dbo.sprCar_Info ci ON ci.??? = d.???
    Ответ написан
    2 комментария
  • Cтоит ли использовать новостной движок CUTENEWS.RU?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Cтоит ли использовать новостной движок CUTENEWS.RU?
    В общем случае - нет, движки без поддержки сообщества и без обновлений по сути бесполезны. По этому какой бы крутой движок не был "внутри", весь смысл в работе на постоянной основе и поддержке, а это без распространенности не бывает. Так что ответ - не стоит.

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