Практическое использование PHP cURL при разработке сайтов

PHP-библиотека cURL — это универсальный инструмент для отправки HTTP(S) и FTP-запросов. Она позволяет имитировать работу браузера, загружать и отправлять файлы, работать с cookie и авторизацией. В этой статье мы разберем основные сценарии использования cURL с практическими примерами.
Для настройки запросов используют функцию curl_setopt. Основные параметры:
CURLOPT_URL — адрес запроса.
CURLOPT_POST — активирует POST-запрос.
CURLOPT_POSTFIELDS — данные для POST-запроса.
CURLOPT_USERAGENT — задает User-Agent для имитации браузера.
CURLOPT_TIMEOUT / CURLOPT_CONNECTTIMEOUT — таймауты подключения и выполнения.
GET-запросы
Простой GET-запрос:
$ch = curl_init('https://example.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
GET с параметрами:
$params = ['name'=>'Alex','email'=>'mail@example.com'];
$ch = curl_init('https://example.com?' . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
POST-запросы
Отправка формы:
$data = ['login'=>'admin','password'=>'1234'];
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
echo $html;
POST JSON:
$data = ['name'=>'Маффин','price'=>100];
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
print_r($res);
PUT и DELETE запросы
// PUT
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
// DELETE
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
Работа с файлами
Загрузка одного файла через POST:
$curl_file = curl_file_create(__DIR__.'/image.png');
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['photo'=>$curl_file]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
Несколько файлов:
$files = [
'photo[0]' => curl_file_create(__DIR__.'/image.png'),
'photo[1]' => curl_file_create(__DIR__.'/image-2.png')
];
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_POSTFIELDS, $files);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
Скачивание файла в локальный каталог:
$ch = curl_init('https://example.com/file.jpg');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents(__DIR__.'/file.jpg', $data);
Работа с cookie:
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__.'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'/cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
Передача конкретного cookie:
curl_setopt($ch, CURLOPT_COOKIE, 'PHPSESSID=1234567890');
Имитируем браузер и HTTP заголовки:
$headers = [
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
'Accept: text/html,application/xhtml+xml',
'Accept-Language: ru-RU,ru;q=0.9'
];
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);
Авторизация
Basic HTTP:
curl_setopt($ch, CURLOPT_USERPWD, 'login:password');
OAuth:
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth TOKEN']);
Дополнительно
Получение кода ответа сервера:
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
Загрузка через FTP:
$fp = fopen("/path/to/file","r");
curl_setopt($ch, CURLOPT_URL, "ftp://user:pass@server.com/file");
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
PHP cURL — это универсальный инструмент для работы с HTTP, HTTPS и FTP. Освоив основные методы, можно автоматизировать загрузку данных, взаимодействие с API и работу с файлами на сервере, что значительно ускоряет разработку веб-приложений.
Чтобы получить полный доступ, зарегистрируйтесь или войдите под своим именем.
