PHP cURL – Примеры использования – SeoLik Блог

Почему curl?

На самом деле, есть много других способов отправить запрос на другой сервер чтобы, например, получить содержимое страницы. Многие, в основном из-за лени, используют простые PHP функции, вместо cURL:

Основы curl

Прежде чем перейти к сложным примерам, рассмотрим базовую структуру cURL запроса в PHP. Для выполнения cURL запроса в PHP необходимо сделать 4 основных шага:

  1. Инициализация.
  2. Установка опций.
  3. Выполнение запроса.
  4. Очистка ресурсов.

Curl & libcurl & php

Давайте разберемся с понятиями curl, libcurl и PHP / cURL.

Multi curl

Одна из продвинутых возможностей cURL в PHP — это возможность выполнения нескольких запросов одновременно и асинхронно.

В обычных условиях скрипт останавливается и ждет выполнения запроса. И если вам надо выполнить много запросов, то это может занять много времени, т.к. вы будете выполнять последовательно. Это ограничение можно обойти:

Php curl – имитация браузера

Некоторые сайты блокируют обращения к своим страницам посредством cURL (парсинга) . Чтобы обойти эти ограничения нужно имитировать браузер:

Авторизация с помощью curl в php | блог о веб-разработке vhod-v-lichnyj-kabinet.ru

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

Изначально, перед тем как что-то программировать нам нужно кое-что уточнить.
1. Узнать ссылку к скрипту авторизации, который будет отвечать на запросы.
2. Узнать имена полей, отправляемые скрипту, традиционно это поля логина и пароля.
3. Ваш рабочий логин, и пароль.

Похожее:  Что такое логин и как его создать?

Затем приступаем к примеру:

// URL скрипта авторизации
$login_url = 'http://exampe.com/login.php';
 
// параметры для отправки запроса - логин и пароль
$post_data = 'login=ваш_логин&password=ваш_пароль';
 
// создание объекта curl
$ch = curl_init();
 
// используем User Agent браузера
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
 
// задаем URL
curl_setopt($ch, CURLOPT_URL, $login_url );
 
// указываем что это POST запрос
curl_setopt($ch, CURLOPT_POST, 1 );
 
// задаем параметры запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
 
// указываем, чтобы нам вернулось содержимое после запроса
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
// в случае необходимости, следовать по перенаправлени¤м
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 
/*
	Задаем параметры сохранени¤ cookie
	как правило Cookie необходимы для дальнейшей работы с авторизацией
*/
 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
 
// выполняем запрос для авторизации
$postResult = curl_exec($ch);

После выполнения функции curl_exec будет выполнен запрос с параметрами авторизации, содержимое страницы ответа будет находиться в переменной $postResult.
Опция CURLOPT_COOKIEFILE указывает файл, в котором будут храниться данные cookies полученные после успешного выполнения запроса авторизации. Так же следует убедиться в наличии прав PHP для создания и записи файла.

Все последующие запросы после успешной авторизации могут выполняться с помощью этих функций:

curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);

Кстати, для отладки удобно использовать консоль браузера, в Firefox и Chrome для открытия служит клавиша F12. Открыв вкладку «сеть» можно просмотреть параметры, отправляемые на заданный URL и ответ сервера.

Загрузка по ftp

В PHP есть своя библиотека для работы с FTP, но можно использовать и cURL:

Загрузка файлов

Загрузка файлов очень похожа на предыдущий скрипт, т.к. загрузка файлов всегда выполняется с помощью POST запросов.

Так же как и в предыдущем примере, создадим файл, который будет принимать запросы, upload_output.php:

print_r($_FILES);

И сам скрипт, загружающий файлы:

Использование curl в php

Использовать curl в PHP очень просто. Основная идея использования curl в PHP

  1. Инициализировать curl сеанс (session)
  2. Установите различные параметры для сеанса
  3. Выполнить и получить / отправить данные с / на сервер
  4. Закройте сеанс (session)

Использование прокси

Запросы можно выполнять через определенный proxy:

Колбэки (callback functions)

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

Отправляем post запросы

При выполнении GET запросов данные можно передавать в строке запроса. Например, когда вы ищете в гугле, ваш запрос передается в URL:

Отслеживание ошибок

При необходимости, вы можете добавить следующие строки для отслеживания ошибок:

Отслеживание редиректов, в зависимости от браузера

В этом примере мы напишем скрипт, который будет определять перенаправления в зависимости от разных настроек браузера. Например, некоторые сайты перенаправляют посетителей с мобильных устройств, посетителей из других стран.

Получение информации о запросе

Другой необязательный шаг — получение информации о cURL запросе, после его выполнения.

Проверка внешних ссылок в wordpress

Представьте себе блог с большим количеством постов, содержащих ссылки на внешние сайты. Некоторые из этих ссылок могут быть не рабочими.

Напишем скрипт, который найдет все нерабочие ссылки и покажет их нам.

Для начала нам необходимо вытащить все внешние ссылки из базы данных:

Сделаем запрос в google и выведем результат

Ниже перечислены функции, которые Вам могут потребоваться для решения более сложных задач:

  1. curl_error(): в более продвинутых системах Вы всегда должны использовать curl_error() для проверки ошибок на основе возвращаемого значения (bool) curl_exec().
  2. curl_setopt(): есть большое количество опций. Посмотрите на файл руководства. На этой странице есть четкое объяснение различных опций.

Заключение

В этой статье мы рассмотрели продвинутые возможности cURL в PHP. В следующий раз, когда вам понадобится делать URL запросы — используйте cURL.

На этом всё!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *