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

72 10 января 2026

PHP-библиотека cURL — это универсальный инструмент для отправки HTTP(S) и FTP-запросов. Она позволяет имитировать работу браузера, загружать и отправлять файлы, работать с cookie и авторизацией. В этой статье мы разберем основные сценарии использования cURL с практическими примерами.


Для настройки запросов используют функцию curl_setopt. Основные параметры:

CURLOPT_RETURNTRANSFER — возвращает ответ в виде строки.

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 и работу с файлами на сервере, что значительно ускоряет разработку веб-приложений.


Кто читал
Онлайн / История (30 дней)
3
Online (1)
История (3)
❓ Unknown Desktop
Привет! Похоже, Вы ещё не вошли на сайт.
Чтобы получить полный доступ, зарегистрируйтесь или войдите под своим именем.