Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Рисуем компас на PHP

14.10.2022 | Категория: Web-мастеру и не только | Автор: ManHunter

Рисуем компас на PHP

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

Читать статью целиком »
Просмотров: 726 | Комментариев: 4

Отправка POST-запроса с помощью file_get_content

28.09.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Так уж сложилось, что для отправки запросов на PHP чаще всего используются функции cURL. Действительно, с их помощью можно сформировать практически любой запрос на удаленный или локальный сервер, с любыми параметрами, заголовками и т.п. А функцию file_get_contents() обычно применяют для чтения локальных файлов или для простого захвата содержимого одиночной web-страницы GET-запросом. Но если дополнить функцию file_get_contents правильно настроенным контекстом, то она получает способность также отправлять запросы разных типов и с различными параметрами. Контекст запроса настраивается при помощи функции stream_context_create(). Отправка запроса выполняется по следующей схеме:
  1. // Данные формы для отправки
  2. $form_data=array(
  3.     'login'=>'uzar@example.com',
  4.     'password'=>'supadupapassa',
  5. );
  6. // Настраиваем контекст
  7. $context=stream_context_create(
  8.     array(
  9.         'http'=>array(
  10.             'method'=>'POST',
  11.             'header'=>
  12.                 'Content-Type: application/x-www-form-urlencoded'.PHP_EOL.
  13.                 'Cookie: session_id=123abcdef; utm=example'.PHP_EOL.
  14.                 'User-Agent: Mozilla Interfax',
  15.             'content'=>http_build_query($form_data),
  16.         )
  17.     )
  18. );
  19. // Отправить POST-запрос и получить ответ
  20. $html=file_get_contents('https://example.com/auth.php'false$context);
  21. echo $html;
Настройка заголовков схожа с cURL, но там для этого используется массив, а в контексте это строки, разделенные символом PHP_EOL.

Для отправки запроса на https в настройках PHP должно быть включено расширение php_openssl, иначе функция завершится с ошибкой типа "file_get_contents(): Unable to find the wrapper https".

Просмотров: 600 | Комментариев: 1

Работа с INI-файлами на PHP

14.09.2022 | Категория: Web-мастеру и не только | Автор: ManHunter

Работа с INI-файлами на PHP

Файлы формата INI - это файлы конфигурации, которые используются различными программами и самой операционной системой Windows для хранения своих настроек. Мне этот формат очень нравится из-за своей доступности и легкости в обработке. На Ассемблере я уже сделал с ними все, что хотел, а теперь понадобилось работать с INI-файлами на PHP. В арсенале PHP есть стандартная функция parse_ini_file, но она содержит принципиальные ошибки, ограничена в возможностях и не решает нужных мне задач. Пришлось рисовать класс для полноценной работы с INI-файлами на PHP.

Читать статью целиком »
Просмотров: 966 | Комментариев: 4

Запуск задания cron с интервалом меньше 60 секунд

31.08.2022 | Категория: Web-мастеру и не только | Автор: ManHunter

Формат crontab

Как известно из документации, минимальный интервал запуска заданий в cron равен 1 минуте. Причина такого ограничения понятна, минутный интервал нужен, чтобы не перегрузить систему параллельными задачами в случае некорректных настроек. А мне понадобилось запускать определенный процесс каждые 20 секунд. Да, можно было бы написать промежуточный скрипт, который запускался бы раз в минуту по планировщику, а потом запускал процессы с нужными интервалами. Но есть более красивое решение средствами самого cron. Для того чтобы какое-либо задание запускалось каждые 20 секунд, в файле crontab нужно сделать 3 записи, что-то типа такого:

####################################################
# Запуск задания каждые 20 секунд
####################################################

* * * * * /usr/local/bin/php -f /path/to/script.php
* * * * * (sleep 20 ; /usr/local/bin/php -f /path/to/script.php)
* * * * * (sleep 40 ; /usr/local/bin/php -f /path/to/script.php)

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

Просмотров: 1560 | Комментариев: 2

Как обойти подтверждение по SMS и телефону

03.07.2022 | Категория: Web-мастеру и не только | Автор: ManHunter

Как обойти подтверждение по SMS и телефону

Сейчас практически нереально найти сервис или сайт, который бы не требовал подтверждение мобильного телефона. Это может быть SMS с числовым кодом или последние несколько цифр номера телефона, с которого вам позвонят. Тенденция, на мой взгляд, отвратительная, но речь сегодня немного не об этом. Вроде подтвердил номер один раз и пользуйся сколько угодно, благо левых симок пока хватает. Но ведь нет же. Особо отбитые сервисы при попытке захода с каждого нового устройства требуют повторной авторизации с обязательным подтверждением через SMS или контрольный звонок. Типа безопасность, типа защита данных, типа все делается в наших же интересах и все такое. Иногда повторная авторизация с телефонным кодом требуется, когда сервис посчитает запросы к нему подозрительными или вообще просто так, потому что вот захотелось. Но есть задачи, когда информация с сервиса должна обрабатываться автоматически без участия человека. Авторизацию с вводом логина-пароля эмулировать несложно, навороты на клиентской части тоже в большинстве случаев успешно обходятся, а как быть с телефоном? Устройство (сервер) фактически новое и неавторизованное, читать SMS и брать трубку PHP еще не научился.

Читать статью целиком »
Просмотров: 2966 | Комментариев: 1

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 3 (0.0085 сек.) / Память: 4.5 Mb
Наверх