Отправить POST-запрос (curl)

1-ый способ: cURL (рекомендуется)

Отправить POST-запрос можно через cURL.

// переменные для POST-запроса
$post = [
    'lang' => 'PHP',
    'vers' => '8.3'
];
 
// Отправка POST-запроса
$ch = curl_init('https://example.ru/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch); // Ответ сервера

if (curl_errno($ch)) {
    echo 'Ошибка curl: '.curl_error($ch);
}

// Завершить сеанс с cURL и освободить ресурсы
curl_close($ch);

В переменной $data содержится контент указанной страницы, загруженная с указанными POST-запросами.

Параметр CURLOPT_RETURNTRANSFER указывает, что ответ надо возвращать в переменную, а не выводить на странице.

Если cURL не работает, его надо установить:

apt-get install php-curl

После установки надо перезапустить веб-сервер, чтобы cURL добавился в настройки PHP.

2-ой способ: file_get_contents

Если сервер не поддерживает работу с cURL, то POST-запрос можно отправить через функцию file_get_contents().

// переменные для POST-запроса
$post = [
    'lang' => 'PHP',
    'vers' => '8.3'
];

// отправка POST-запроса
$options = [
    'http' => [
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($post)
    ]
];
$context  = stream_context_create($options);
$data = file_get_contents('http://example.com/', false, $context);

В переменной $data содержится контент указанной страницы, загруженная с указанными POST-запросами.