Ответы пользователя по тегу PHP
  • Как извлечь текст из видео?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как извлечь эти данные, из самой "картинки"? Есть ли готовые решения на PHP или других язык программирования?
    Есть. И для PHP и для других языков программирования, очень давно уже изобрели OCR или "Системы оптического распознавания текста" (к слову, нечто подобное по смыслы мониторит российские дороги, в формате камер для поиска нарушителей ПДД).

    Если воспользоваться поиском, в т.ч. по "Тостеру", то среди прочего мы увидим следующее:
    1. https://www.abbyy.com/ru-ru/ocr-sdk/ пожалуй лучшая распознавалка, от Abby
    2. Ответ на "Тостере"
    3. Немного про распознование текстов на хабре
    4. Ещё про OCR на PHP
    5. Ещё немного
    6. И т.д.
    Ответ написан
    Комментировать
  • От чего возникает ошибка в PHP?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Для записи многострочного текста нужно использовать конструкцию <<<, тогда и ошибок (кусков кода) подобных не будет.
    Ответ написан
  • Как настроить PhpStorm 2016.1.2+Openserver?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как я понял, единственная цель PhpStorm+Openserver это "заменить" устаревший локальный сервер PhpStorm на современный Openserver со всеми настройками, возможными дополнениями, дебагеррами и т.д.


    Цель PhpStorm'a - предоставить IDE. Цель OpenServer'а - предоставить полноценную (до некоторой степени) среду разработки и выполнения PHP-скриптов/приложений/сайтов/etc. Помимо интерпретатора PHP, в OpenServer'е есть масса других модулей (программ), в зависимости от "комплектации": от различных баз данных, для всяких "офисов" и т.д. Это связано с тем, что в большинство проектов не ограничивается исключительно интерпретатором PHP, многим так же требуются различные БД, иногда хранилища (например, Redis или Memcached) и прочие инструменты.

    PhpStorm пишет - configuration php.ini file does not exist. Но php.ini там разумеется есть.
    Возможно, это связано с тем, что в путях содержится что-то отличное от латинских букв (иногда могут так же "мешать" пробелы в путях, хотя это бывает гораздо реже).

    Обычно, процесс выглядит следующим образом:
    0. Указывать путь до интерпретатор PHP не всегда обязательно или необходимо, иногда без этого можно вполне обойтись
    1. В папке, в которую установлен OpenServer, среди прочего, есть папка domains, в которой вы создаёте папку с будущим проектом (сайтом) и называете её, например, site1.local
    2. (Пере)запускаете OpenServer, крайне желательно это делать с правами администратора, т.к. он будет вносить изменения в файл hosts системы, что бы сайт стал доступен по соотв. адресу (в данном примере, по адресу: site1.local)
    2.1. Открыть проект так же можно через меню OpenServer'a: Мои сайты -> "Нужный сайт"

    Что бы проект открывался в PhpStorm'е по соотв. ("правильному") адресу, вместо встроенного веб-сервера - я думаю, нужно изменить какие-то настройки проекта в PhpStorm (какие именно - сказать затрудняюсь, т.к. никогда не пользовался таким способом работы с проектом).

    P.S. Для того, что бы отлаживать проект в разных браузерах, обычно используют различные BrowserSync'и, LiveReload'ы и т.п.

    P.P.S. Если Вам нужен простой веб-сервер с поддержкой PHP, исключительно для разработки/отладки - такой сервер есть в самом PHP.
    Ответ написан
    2 комментария
  • Как обновлять каждую секунду значение в MySQL посредством PHP?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как мне кажется из каменного века. Создать отдельное поле, в которое я сохраняю точное время инициации действия. В тот момент когда мне надо показать пользователю поле "account" я показываю account + ( (дата инициации дейтсивя обновления поля accoutn) - (дата отображения поля) )*(нужный параметр добавления)
    "Долбить" базу каждую секунду, без особой на то нужды, когда можно этого не делать - плохая идея. Данное решение описывает более рациональный подход, если он конечно возможен.

    Писать сторонний микросервис, который будет отправлять каждую секунду запросы в БД и увеличивать значение.
    Не знаю, что Вы подразумеваете под "сторонним микросервисом" и как это в конечном итоге должно работать (логически), например при нагрузке, запросы могут вставать в очередь и данные могут терять свою актуальность в этом (вашем) случае... Можете попробовать несколько вариантов:

    1. Попробовать использовать "родные" события MySQL

    2. Создать примитивный скрипт PHP, типа такого и запустить его (на бесконечное выполнение):
    <?php
    while(true) {
    mysql_query("..."); //Условно
    sleep(1);
    }
    но, он будет выполняться не 1 раз в секунду, а с паузой в 1 секунду

    3. Загадить крон заданиями, в кол-ве около 60 штук (т.к. крон задания запускаются минимум 1 раз в минуту), как это примерно должно выглядеть описано здесь, что в целом тоже не очень надёжно, т.к. высока вероятность, что рано или поздно, запросы могут отвалиться, приводя тем самым самым данные в неактуальное состояние.
    Ответ написан
    1 комментарий
  • Как сделать кэширование SQL результатов?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Возможно ли сохранить объект ответа sql, без выполнения fetch?
    Не совсем понимаю, в каком ракурсе речь идёт про fetch и что означает "сохранить объект ответа в базе"? Курсор сохранить?

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

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Но как сделать так чтобы этот таймер работал даже когда пользователь полностью вышел из сайта, удалил куки и все такое, тоисть таймер будет работать и отправит запрос в бд, даже если пользователя нету на сайте.

    Я бы предложил поступить следующим образом:
    0. Взять VPS, выделенный сервер или иную полноценную площадку, позволяющую использовать нужное ПО, а не только то, которое подготовил для нас хостер (*цены на VPS, вполне сравнимы с обычными хостингами)
    1. Использовать утилиту at

    Выглядит всё примерно следующим образом:
    1. Пользователь отправляет какой-то запрос на сервер
    2. Сервер обрабатывает его и формирует нужную команду, которая будет запущена через N минут
    3. Команда выполняется через указанное время, все счастливы

    Пример того, как выполнить что-то через 5 есть например здесь
    Ответ написан
  • Почему фунция random_bytes выводит кракозяблики?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Я думаю, это связано с тем, что функция генерирует случайные байты, а не буквы.
    Ответ написан
    Комментировать
  • Как уникально идентифицировать пользователя на сайте?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    но в таком случае может возникнуть ситуация когда пользователь сменить содержимое куки к примеру на ID другого пользователя и таким образом попадает на его страницу без пароля. Что мне нужно записать в куки?
    Самый простой вариант - сгенерировать какой-нибудь уникальный ID а потом зашифровать его sha512 например. Получите длинный уникальный ключ который довольно сложно подделать. Уникальный ID - должен быть в прямом смысле уникальным, а не "1, 2, 3". Например, крипто безопасные случайные числа на PHP, полученное число можно разбавить другими уникальными данными, например временем и ещё чем-то (например, как подсказывает коллега выше - добавить туда IP адрес, среди прочего). Полученные в результате хеш - будет достаточно уникальным. Привязываем этот хеш к пользователю и... готово!

    P.S. "Подменщиков" куки, т.е. клиентов, которые пытаются сменить значение в куке на несуществующее - нужно отслеживать и банить по IP, как минимум.
    Ответ написан
  • Как сохранить файл на другом сервере на PHP?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Подозреваю, что нужно копать в сторону cURL, но всё таки решил спросить у знатоков.
    Можно cURL, можно готовую библиотеку взять.
    Ответ написан
    Комментировать
  • Как сделать HTTP POST request на php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Вариант с гуглом и cURL'ом Вам уже посоветовали... Есть ещё Guzzle, если Вам нужна библиотека.
    Ответ написан
    Комментировать
  • Безопасна ли такая авторизация php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Безопасен ли такой способ сессии?
    Сами сессии в PHP довольно безопасны. Авторизация через ВК (механизм OAuth2) - тоже. Или Вы о чем-то ещё спрашиваете?

    P.S. Обычно, никто не хранит данные пользователя в сессии, т.к. это будет порядком подзасирать сервер, особенно если данных много. Храните их в БД или например каком-нибудь там Redis'е или Memcached'е или в другом кэширующем хранилище (как вариант, если БД чем-то не устраивает).
    Ответ написан
    Комментировать
  • Как найти ключ в массиве?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Это не оно часом?
    Ответ написан
    Комментировать
  • Как в php fzaninotto/Faker получить данные без сохранения в базу?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как я могу получить эти данные без сохранения, а просто в переменную?
    Что делает функция create в Вашем случае? Есть подозрение, что это функция не фейкера и/или эта функция как раз напрямую отвечает за создание (сохранения) записи в БД.

    Вариантов тут, основных, пожалуй два:
    1. Плохой вариант. Проводить операцию в транзакции и откатывать её в последствии.
    2. Генерировать данные без сохранения оных в базу, нашел пример в документации:
    // use the factory to create a Faker\Generator instance
    $faker = Faker\Factory::create();
    
    // generate data by accessing properties
    echo $faker->name;
      // 'Lucy Cechtelar';
    echo $faker->address;
      // "426 Jordy Lodge
      // Cartwrightshire, SC 88120-6700"
    echo $faker->text;
      // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit
      // et sit et mollitia sed.
      // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium
      // sit minima sint.


    P.S. Примера функции create() в чистом виде, при беглом осмотре, в документации фейкера - мне найти не удалось. Более того, я не нашел в документации ни слова о том, что фейкер умеет сам что-то сохранять в базу, есть только примеры, как сохранять данные в БД которые генерирует фейкер с помощью разных ORM и им подобных штуковин.
    Ответ написан
    Комментировать
  • Плохо ли из page.html делать page.php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Ведь почти на всех сайтах я встречал расширения html. Поясните пожалуйста за данный случай.
    Поисковой системе, в большей степени - всё равно, какое у Вас там расширение и есть ли оно вообще. В большинстве случаев, расширение - это часть адреса, в т.ч. можно попробовать настроить переадресацию с ".html" на файлы ".php", на уровне веб-сервера Apache / файла .htaccess.

    Только вот не знаю плохой ли тон так делать?
    Очень вряд ли это можно назвать плохим тоном. Преимущество "голых HTML" только в том, что можно сэкономить в районе 1$ на хостинге в мес., что в свою очередь - довольно незначительная сумма для любого мало мальски серьёзного проекта...

    Что именно использовать, PHP или шаблонизаторы для HTML - решать Вам, вопрос скорее (личного) удобства, чем функциональности.
    Ответ написан
    Комментировать
  • Оптимальная конфигурация для сервера?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Планирую переезжать на новый сервер. Подскажите какую версию php выбрать 7.0 или 7.1
    Если Ваш код работает и на той и на другой - я бы выбрал 7.1 по определению. Т.к. она новее и некоторые фреймворки (насколько я помню, Symfony-4 входит в их число) уже требуют версию PHP не ниже 7.1. Т.е. с учётом "с запасом на будущее", я бы взял максимально новую из доступных версий PHP, если Ваш код (проект), который уже написан, на ней запустится.

    И какую версию mariaDB - 10.0 или 10.1 ?
    MariaDB... думаю по тому же принципу. Судя по всему, особо глобальных различий между версий 10.0 и 10.1 нет, но я бы поставил последнюю из этого списка, т.к. судя по всему, её разработчики попытались что-то улучшить (скорее всего, обосновано).
    Ответ написан
    3 комментария
  • Как сделать запрос к PHP в браузере?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как сделать запрос к PHP в браузере?

    $username = $_POST['username'];

    Подозреваю, что POST нужно заменить на GET или REQUEST
    Ответ написан
    2 комментария
  • Какой использовать шаблонизатор для php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Какой использовать шаблонизатор для php?
    Присоединяюсь к предыдущему оратору - Twig.

    Нужен простой шаблонизатор.
    Простой - Smarty.

    Подскажите пожалуйста шаблонизатор! Желательно не слишком сложный)
    Twig - не слишком сложный.
    Ответ написан
    Комментировать
  • Что лучше выбрать для обчения asp.net или php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Первая платформа выбрана, по тем параметрам, что внутренняя часть пишется на самом C#, с которым я уже работал.
    Расскажу Вам историю о себе в двух словах: работал сис. админом и системным программистом (ассемблер, С++), лет N-цать назад ушел в веб, когда ещё DialUp-модемы были... Ни C++ ни Ассемблер в вебе преимущественно не использую и не собирался изначально, не смотря на то, что знал их...

    Да и писали, что она вроде как не слишком дрявая ко взлому.
    Дрявые бывают мысли у тех, кто делает подобные умозаключения. Времена PHP-3 давно прошли, а некоторые всё никак не успокоятся...

    И так, ещё раз, дырявыми бывают программы, а не языки.

    Но очень малое количество уроков и проектов которые можно посмотреть, сильно пугает.
    Это связано с тем, что за пределами корпоративной среды, очень мало кого интересует дырявый windows (с не слишком дырявым ASP, как мы выяснили ранее) :)))

    Вторая же платформа выбрана тем, что по ней много уроков и проектов которые можно пощупать.
    Поверьте мне, когда Вы сможете "щупать проекты" - уроки уже будут не нужны...

    Да и вроде как обновления частенько выходят.
    Я не буду это комментировать...

    Но в тоже время на хабре писали, что она довольно сильно восприимчива ко взлому.
    И это тоже (комментировать не буду) :)))

    Прошу помочь знающих людей в совете, в какую сторону ступать.
    ASP.NET / .NET / C# / Windows - горячо любимая в корпоративной сфере экосистема. Но, надо сказать, по настоящему горячо её любят те, кто с другими системами в общем то и не знаком или почти не знаком... Иными словами, определитесь, для чего Вы хотите всё это изучать, в какой стране и где (фриланс, фирма и т.п.) работать? Если исключительно на/в США или близким к ним странах - можете смело выбирать Windows-стек и в бой, так эта система по понятным причинам чуть ли не на гос. дотациях сидит. А если собираетесь работать в любой (или любой другой) точке мира, - выбираете любой OpenSource стек, в т.ч. PHP, Python, Ruby и так далее (в Вашем случае, это будет соотв. PHP).

    Почему? По тому, что:
    1. ASP.NET / .NET / C# - имеет очень косвенное отношение к OpenSource
    2. Все эти разработки и наработки принадлежат одной, крупной коммерческой, иностранной компании, со всеми вытекающими
    3. В виду современной политической обстановки, если немного подумать, предыдущий пункт может стать довольно важным... это я Вам говорю как человек, у которого нет телевизора и который о полит новостях узнает в тот момент, когда уже даже в местном баре "это" становится темой дня

    А дальше... решать исключительно Вам :)
    Ответ написан
  • Как узнать включен ли Javascript у юзера желательно средствами php?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Как узнать включен ли Javascript у юзера желательно средствами php?
    Чисто логически, самый простой способ выглядит примерно так:
    1. Выполняем какой-то микроскопический код на JS'е, оповещаем об серверную часть, с помощью какого-то запроса или чего-то в таком духе.
    2. Если код не выполнился - значит JS выключен

    "Узнать средствами PHP", думаю, что никак. Т.к. JS это исключительно клиентская часть, в том смысле, в котором Вы про нее говорите и стандартных механизмов, вроде передачи соотв. параметра браузером, например, как HTTP-заголовка, изначально не предусмотрено.

    Реализовать подобную проверку соотв. довольно просто, но на клиентской части, это будет выглядеть как костыль.
    Ответ написан
  • Почему результат 28?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Тут дан подробный ответ на Ваш вопрос. В т.ч. как заметил коллега в в предыдущем ответе - если Вам нужна точность для чисел с плавающей точкой, для этих целей используются либо специальные механизмы (они в т.ч. описаны по ссылке выше) либо используются целые числа, конечный результат которых делится на 100 (это как пример, при работе с деньгами).

    P.S. Подобное поведение актуально не только для PHP, но и для многих других языков, которые работает с числами с плавающей точкой "напрямую" (не хочу углубляться в техническое подробности, слишком много текста). В свою очередь некоторые языки по умолчанию могут обрабатывать любые числа (и с плавающей точкой и целые) как строки, изначально, и там такой "проблемы" изначально нет (в виду этого, там есть другие проблемы, но это уже другая история).
    Ответ написан
    Комментировать