Blog. Just Blog

Web-мастеру и не только

Полезные решения для Web-мастеров
Web-мастеру и не только - RSS-канал Web-мастеру и не только - Карта сайта

Генерация лабиринта на PHP

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

Генерация лабиринта на PHP

Рекурсивно-возвратный алгоритм - один из самых простых способов генерации лабиринта на основе двумерного массива. Помимо высокой скорости работы, его плюсы в том, что в созданном лабиринте нет замкнутых областей, а из любой точки лабиринта можно всегда добраться до любой другой. В результате такие задачи, как добраться от входа до точки в центре лабиринта, или наоборот, выбраться из случайного места лабиринта к выходу, расположенному на произвольной стороне, или просто пройти лабиринт от края до края с произвольным расположением входа и выхода, все они гарантированно имеют решение, причем единственное. А кроме того, готовый лабиринт выглядит сбалансированным, без длинных тоннелей, пустых залов, колонн и неоднородных участков.

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

Работа с Punycode на PHP

18.10.2022 | Категория: Web-мастеру и не только | Автор: ManHunter
Согласно существующим стандартам, любое доменное имя может состоять только из 26 символов латинского алфавита, цифр от 0 до 9 и символа дефиса. До момента, как ICANN разрешила использование символов национальных алфавитов, это правило безоговорочно соблюдалось. Теперь же эти ваши интернеты забиты сайтами с доменами на иероглифах, кириллице, всяких умляутах и прочем юникоде. Лично я считаю, что использование любых национальных символов в доменах, ссылках и именах файлов в интернете должно быть категорически запрещено. Но так как мое мнение в этом вопросе значения не имеет, приходится работать с тем, что есть. Для преобразования домена из национальной кодировки в ACE-последовательность в PHP существует функция idn_to_ascii. Но если бы она работала как надо, то и этой статьи бы не появилось.
  1. // Только домен, конвертирует правильно
  2. $url='СуперСайт.рф';
  3. echo idn_to_ascii($url);
  4. // xn--80ajnvgddkc.xn--p1ai
  5.  
  6. // Ссылка целиком, конвертирует с ошибкой
  7. $url='https://СуперСайт.рф/login/?id=123#result';
  8. echo idn_to_ascii($url);
  9. // xn--https://-86g3c5b4doldsk.xn--/login/?id=123#result-pir2e
Суть проблемы в том, что idn_to_ascii корректно работает только с "чистым" доменом, если ей передать на обработку всю ссылку целиком, то на выходе получится вообще не то, что надо. А на практике чаще всего приходится сталкиваться именно со ссылками.

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

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

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

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

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

Читать статью целиком »
Просмотров: 294 | Комментариев: 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".

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

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

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

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

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

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

prev 01 02 03 04 05 06 07 08 09 ... 39 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2023
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0016 сек.) / Память: 4.75 Mb
Наверх