Задать вопрос
  • При парсинге с помощью cUrl сайт выдает json массивы, как выбрать нужную инфу?

    @vuldozer
    пока ты не дашь сайт и не скажешь, чем ты парсить пытаешься, мы тут будет все в экстрасенсов играть.

    Я вангую, что так происходит из-за заголовков твоих запросов. Либо из-за магии мордора
    Ответ написан
    4 комментария
  • Две POST проверки в одном файле?

    leha_gorbunov
    @leha_gorbunov
    Программист
    Если 2 формы, то добавь в каждую
    <input type="hidden" name="frmname" value=""/>

    И сделай проверку на имя формы
    if ($_POST['submit']&&$_POST['frmname']) {
      echo "hi";
    }
    Ответ написан
    Комментировать
  • Как добавлять текст к слову между символом?

    @Vitsliputsli
    echo str_replace("[", "[привет|", "У меня есть [красное] и еще [зеленое] яблоко")
    Ответ написан
    1 комментарий
  • Как работает цикл foreach с многомерными массивами?

    DevMan
    @DevMan
    откуда появилась $massiv2 если в цикле объявлена $massiv?
    https://ideone.com/vgokp7
    Ответ написан
    Комментировать
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Какой из способов организации хранения адресов и данных паспорта выбрать?

    cesnokov
    @cesnokov
    <head>&nbsp;</head>
    Вероятнее всего, что вид хранения полностью зависит от нескольких факторов:
    • Количество и структура информации влияет на выбор типа базы данных (реляционной или нереляционной). В вашем случае (json массив и миллион паспортов) = надо смотреть в сторону NoSQL и хранить всё одним блоком (коллекцией) ради мифической скорости. Но ведь больше не будет ветвиться структура и не появятся новые зависимости, количество полей известно и очень легко и красиво делиться на таблички.
    • Паспортные данные = личная информация = надо её защищать, любить и лелеять. GDPR дойдёт и до вас, не сомневайтесь. И тогда: разборки, анальные досмотры, суды, штрафы и т.д. И когда вашу базу кто-то стащит он не должен получить всю информацию в явном виде, т.е. такие данные должны храниться частями в разных местах: имена отдельно, адреса отдельно, мухи отдельно. Снова смотрим в сторону табличек, параллельно раскладывая данные разных таблиц на разных серверах и в разных ЦОД'ах.
    • Кто заказчик? Вы делаете это для себя? Для турагентства? Для ФСБ? Для себя - вообще неважно, что, как и где хранить, главное чтоб вам было интересно код писать. Для турагентства - скоро им запретят хранить такую информацию и вам дадут заказ всё переделать по новым законам/правилам/СНиП'ам. А вот ФСБ сами скажут (или ночью подправят ваш код) какая структура данных должна быть и как её хранить по ГОСТ'у.

    По моему мнению, с учётом вышеизложенного, информацию такого типа надо дробить на мелкие кусочки и складывать в отдельные таблички. И пускай меня засмеют проповедники обречённости реляционных моделей - я упёртый консерватор.
    Ответ написан
    2 комментария
  • В чем основной вред SELECT *?

    Ошибка в том, что задача СУБД вернуть соответствующий запросу результат и только те данные, которые необходимы программе.
    Т.к. СУБД обычно находится на отдельном хосте, запрос со * будет создавать дополнительную нагрузку на сеть, т.к. будет передавать даже те поля, которые не нужны приложению, в свою очередь это вызови большее потребление ресурсов и самим приложением, которому необходимо будет обрабатывать результат запроса с "мусорными" данными. Использование * будет оправдано в случае, когда действительно необходимы все поля запроса или обработка запроса будет выполняться какой-нибудь ORM.
    Ответ написан
    1 комментарий
  • PHP запись полученной информации в файл?

    cesnokov
    @cesnokov
    <head>&nbsp;</head>
    file_put_contents('file_name.html', $html);
    Ответ написан
    Комментировать
  • Необходимо в форме передать значение отправляемому файлу. Как?

    @dcode
    Вы можете оставить всё так как сейчас, через гет-параметр idfilm, либо убрать его и добавить
    <input type="hidden" name="idfilm" value="'.$cow['idfilm'].'">

    в форму. В текущем варианте idfilm должен быть доступен через $_GET и $_REQUEST. Если через hidden - $_POST и $_REQUEST. В любом случае должно всё работать. Я так подозреваю у вас просто $cow['idfilm'] пустой.
    Ответ написан
    Комментировать
  • PHP_EOL, как правильно вставить картинку?

    xEpozZ
    @xEpozZ
    Веб-разработчик
    Если не понимаете тернарный оператор, то начните с маленьких примеров, а не лезьте в дебри.
    Вынесите ($image ? ... : '') в отдельный if
    Присвойте промежуточный результат в переменную и соедините с основной строкой.

    P.S. Когда задаете вопрос, задавайте его, а не показывайте примеры.
    Проблема какая? Картинка не выводится? Или она выводится, но ее нет? Или тег img не выводится вовсе? Что в переменной $image? Где границы цикла или где у вас происходит дополнение переменной $readyPosts?
    Ответ написан
    Комментировать
  • Где пригодятся побитовые операции в PHP?

    Gomonov
    @Gomonov
    Использую при работе с IP. Если ipv4 представлен в виде int ip2long легко работать с масками, определять, принадлежит ли ip определённой сети и т.п.
    Также РЕДКО использую для описания состояния некоторых свойств классов/сущностей. Например у некоторой сущности есть статус, который может принимать значения: новый, в работе, остановлен, скоро запустится, скоро будет остановлен. Естественно свойство может принимать комбинации статусов - остановлен и скоро запустится или в работе и скоро будет остановлен. На пальцах:
    новый 00001
    в работе 00010
    остановлен 00100
    скоро запустится 01000
    скоро будет остановлен 10000
    Тогда комбинация остановлен и запустится 01100
    Вот для проверки каким статусам соответствует поле используются битовые операции
    Ответ написан
    Комментировать
  • Если сохранить cookie в браузере с помощью JS, то передастся ли cookie на сервер?

    DevMan
    @DevMan
    созданная кука улетит на сервер при следующем запросе.
    Ответ написан
    Комментировать
  • Можно реализовать скрипт по посылке СМС на телефон?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Нужно использовать отправку через внешний сервис: SMS-шлюз и его API (в документации будет вся информация по интеграции).
    Каждая отправка SMS, разумеется, тарифицируется.
    Ответ написан
    2 комментария
  • Как сохранять заполненность полей формы при ошибке отправки (если поле не проходит валидацию)?

    Stalker_RED
    @Stalker_RED
    Либо после отправки заполнять форму этими-же данными,
    либо вообще не позволять отправить ее, а проверку делать на js, возможно используя ajax.

    В идеале сочетать оба способа, чтобы работало и без js.
    Ответ написан
    Комментировать
  • Как запретить исполнение скрипта более 3х раз в неделю?

    tomclancys
    @tomclancys
    Варианта только два, прикручивать базу данных или текстовый файл в котором будете сохранять количество исполнений и далее в начале каждой неделе сбрасывать этот счётчик.
    Ответ написан
    Комментировать
  • Как сделать whitelist PHP функций в eval()?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    как такое можно реализовать я особо найти не смог

    Плохо искали, Corveda/PHPSandbox
    Ответ написан
    Комментировать
  • Как сделать whitelist PHP функций в eval()?

    @bkosun
    Никак, это невозможно.

    Вам нужна песочница, или виртуальная машина.

    $options = array(
      'safe_mode'=>true,
      'open_basedir'=>'/var/www/users/jdoe/',
      'allow_url_fopen'=>'false',
      'disable_functions'=>'exec,shell_exec,passthru,system',
      'disable_classes'=>'myAppClass');
    $sandbox = new Runkit_Sandbox($options);
    
    $sandbox->ini_set('html_errors',true);
    
    // ...
    
    $sandbox->eval('var_dump(isset($foo));');


    https://php.net/manual/ru/runkit.sandbox.php
    Ответ написан
    2 комментария
  • Нужно ли PHP разработчику знать модель OSI?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, web-приложения - это разновидность сетевых приложений. Поэтому обязательно нужно понимать, как работают сети. Во-вторых, чем больше знает разработчик, тем он лучше, тем больше на него спрос, тем лучше условия, тем выше зарплата. То есть ваш вопрос звучит примерно так "Зачем мне получать больше денег и не боятся сокращений?"
    Ответ написан
    6 комментариев
  • Входит ли дата во временной интервал?

    @MikUrrey
    //по феншую
    function checkDateIsBetween(string $data, string $timeFrom, string $timeTo): bool
    {
        $dateObject = new DateTime($date);
        $day = $dataObject->format('Y-m-d');
        $from = (new DateTime($day . ' ' . $timeFrom))->getTimestamp();
        $to = (new DateTime($day . ' ' . $timeTo))->getTimestamp();
        $ts = $dateObject->getTimestamp();
        return ($ts < $to) && ($ts > $from);
    }
    
    //по быстроляну
    function checkDateIsBetween2(string $date, string $timeFrom, string $timeTo): bool
    {
        $ts = strtotime($date);
        list($day, $time) = explode($date);
        return ($ts > strtotime($day . ' ' . $timeFrom)) && ($ts < strtotime($day . ' ' . $timeTo));
    }
    $date = '2019-07-01 16:22:01';
    $timeFrom = '17:40:00';
    $timeTo = '23:59:00';
    $dateIsBetween = checkDateIsBetween($date, $timeFrom, $timeTo);
    $dateIsBetween2 = checkDateIsBetween2($date, $timeFrom, $timeTo);


    Как можно заметить, идея состоит в том, чтобы ко времени начала и конца "пристроить" день заданной даты, а затем получить и сравнить временные метки.
    Ответ написан
    Комментировать
  • Как вывести данные SQL в переменную?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сначала надо соединиться с базой данных

    Дальше все зависит от того, откуда берется 123.
    Если 123 так всегда и написано в вопросе (что вряд ли), то так.
    $query ="SELECT money FROM bot WHERE id_vk = 123";
    $money = $pdo->query($query)->fetchColumn();

    А если 123 сама лежит в переменной, то так
    $query ="SELECT money FROM bot WHERE id_vk = ?";
    $stmt = $pdo->prepare($query);
    $stmt->execute([$id_vk]);
    $money = $stmt->fetchColumn();
    Ответ написан
    1 комментарий