cURL

Часто нужно делать отложенные операции на сайте, например, отправлять сообщения по времени, или скачать данные с сайта или другая эмуляция и в этом поможет данная библиотека...

 

Отдельно устанавливать cURL на сервер обычно не надо, если у вас, конечно, не отдельная сборка, а на openserver например она стоит уже в PHP встроена 

Итак, чтобы пользоваться ею, надо сделать 4 шага:

  1. curl_init - инициализировать сессию
  2. curl_setopt - задать необходимые опции 
  3. curl_exec - выполнить полученный запрос
  4. curl_close - завершить сессию

Итак сразу пример:

$ch = curl_init('https://google.com');
//curl_setopt (resource ch, string option, mixed value) - формула для задания опций

curl_setopt($ch, CURLOPT_HEADER, 1); // читать заголовок
curl_setopt($ch, CURLOPT_NOBODY, 1); // читать ТОЛЬКО заголовок без тела

// выполняем запрос и закрываем сессию:
$result = curl_exec($ch);
curl_close($ch);
echo $result;

 

 

 Все опции есть тут https://www.php.net/manual/ru/function.curl-setopt.php

 

Примеры

1. Функция

<?php


function get_web_page( $url )
{
    $uagent = "Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14";
    // инициализируем сессию - 1 шаг
    $ch = curl_init( $url );


    // 2 шаг - задаем опции
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу
    curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращать заголовки
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // переходить по редиректам
    curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывать все кодировки
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // получаем useragent
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения
    curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // останавливаться после 10-ого редиректа


    // 3 шаг - выполняем
    $content = curl_exec( $ch );
    $err = curl_errno( $ch );
    $errmsg = curl_error( $ch );
    $header = curl_getinfo( $ch );
    curl_close( $ch ); // 4 шаг - закрываем сессию

    $header['errno'] = $err; // если есть ошибка
    $header['errmsg'] = $errmsg; // если есть ошибка, то тут вернет ее описание
    $header['content'] = $content;   // вернет контент страницы
    return $header;
}

 

Используем данную функцию:

$result = get_web_page( "https://yandex.ru" );
if (($result['errno'] != 0 )||($result['http_code'] != 200))
    {
	echo $result['errmsg'];
} else {
	$page = $result['content'];
	echo $page;
	}

 

 Попробуйте, все должно работать на ура, но, если введем несуществующий url , то выйдет ошибка.

 

 

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


Защитный код
Обновить