Web-мастеру и не только
Полезные решения для Web-мастеров
Web-мастеру и не только - RSS-канал
Web-мастеру и не только - Карта сайта
Работа с Punycode на PHP
18.10.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Согласно существующим стандартам, любое доменное имя может состоять только из 26 символов латинского алфавита, цифр от 0 до 9 и символа дефиса. До момента, как ICANN разрешила использование символов национальных алфавитов, это правило безоговорочно соблюдалось. Теперь же эти ваши интернеты забиты сайтами с доменами на иероглифах, кириллице, всяких умляутах и прочем юникоде. Лично я считаю, что использование любых национальных символов в доменах, ссылках и именах файлов в интернете должно быть категорически запрещено. Но так как мое мнение в этом вопросе значения не имеет, приходится работать с тем, что есть. Для преобразования домена из национальной кодировки в ACE-последовательность в PHP существует функция idn_to_ascii. Но если бы она работала как надо, то и этой статьи бы не появилось.Code (PHP) : Убрать нумерацию
- // Только домен, конвертирует правильно
- $url='СуперСайт.рф';
- echo idn_to_ascii($url);
- // xn--80ajnvgddkc.xn--p1ai
- // Ссылка целиком, конвертирует с ошибкой
- $url='https://СуперСайт.рф/login/?id=123#result';
- echo idn_to_ascii($url);
- // xn--https://-86g3c5b4doldsk.xn--/login/?id=123#result-pir2e
Читать статью целиком »
Просмотров: 619 | Комментариев: 0
Рисуем компас на PHP
14.10.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Рисуем компас на PHP
Появилась следующая задача. Есть пачка изображений, каждому изображению соответствует определенное направление съемки. Требуется промаркировать все изображения картинкой компаса, который указывает это направление. С самой маркировкой проблем не возникло, а вот с компасами пришлось немного повозиться.
Читать статью целиком »
Просмотров: 637 | Комментариев: 4
Отправка POST-запроса с помощью file_get_content
28.09.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Так уж сложилось, что для отправки запросов на PHP чаще всего используются функции cURL. Действительно, с их помощью можно сформировать практически любой запрос на удаленный или локальный сервер, с любыми параметрами, заголовками и т.п. А функцию file_get_contents() обычно применяют для чтения локальных файлов или для простого захвата содержимого одиночной web-страницы GET-запросом. Но если дополнить функцию file_get_contents правильно настроенным контекстом, то она получает способность также отправлять запросы разных типов и с различными параметрами. Контекст запроса настраивается при помощи функции stream_context_create(). Отправка запроса выполняется по следующей схеме:Code (PHP) : Убрать нумерацию
- // Данные формы для отправки
- $form_data=array(
- 'login'=>'uzar@example.com',
- 'password'=>'supadupapassa',
- );
- // Настраиваем контекст
- $context=stream_context_create(
- array(
- 'http'=>array(
- 'method'=>'POST',
- 'header'=>
- 'Content-Type: application/x-www-form-urlencoded'.PHP_EOL.
- 'Cookie: session_id=123abcdef; utm=example'.PHP_EOL.
- 'User-Agent: Mozilla Interfax',
- 'content'=>http_build_query($form_data),
- )
- )
- );
- // Отправить POST-запрос и получить ответ
- $html=file_get_contents('https://example.com/auth.php', false, $context);
- echo $html;
Для отправки запроса на https в настройках PHP должно быть включено расширение php_openssl, иначе функция завершится с ошибкой типа "file_get_contents(): Unable to find the wrapper https".
Просмотров: 543 | Комментариев: 1
Работа с INI-файлами на PHP
14.09.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Работа с INI-файлами на PHP
Файлы формата INI - это файлы конфигурации, которые используются различными программами и самой операционной системой Windows для хранения своих настроек. Мне этот формат очень нравится из-за своей доступности и легкости в обработке. На Ассемблере я уже сделал с ними все, что хотел, а теперь понадобилось работать с INI-файлами на PHP. В арсенале PHP есть стандартная функция parse_ini_file, но она содержит принципиальные ошибки, ограничена в возможностях и не решает нужных мне задач. Пришлось рисовать класс для полноценной работы с INI-файлами на PHP.
Читать статью целиком »
Просмотров: 799 | Комментариев: 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 секунд.
Просмотров: 1090 | Комментариев: 2