Как создать php curl

curl_init

Initializes a new session and return a cURL handle for use with the curl_setopt() , curl_exec() , and curl_close() functions.

Parameters

If provided, the CURLOPT_URL option will be set to its value. You can manually set this using the curl_setopt() function.

Note:

The file protocol is disabled by cURL if open_basedir is set.

Return Values

Returns a cURL handle on success, false on errors.

Changelog

Version Description
8.0.0 On success, this function returns a CurlHandle instance now; previously, a resource was returned.
8.0.0 url is nullable now.

Examples

Example #1 Initializing a new cURL session and fetching a web page

// create a new cURL resource
$ch = curl_init ();

// set URL and other appropriate options
curl_setopt ( $ch , CURLOPT_URL , «http://www.example.com/» );
curl_setopt ( $ch , CURLOPT_HEADER , 0 );

// grab URL and pass it to the browser
curl_exec ( $ch );

// close cURL resource, and free up system resources
curl_close ( $ch );
?>

See Also

User Contributed Notes 1 note

Note that is MUCH faster to use use a single instance to make a series of curl requests rather than creating a new instance for each request.

  • cURL Functions
    • curl_​close
    • curl_​copy_​handle
    • curl_​errno
    • curl_​error
    • curl_​escape
    • curl_​exec
    • curl_​getinfo
    • curl_​init
    • curl_​multi_​add_​handle
    • curl_​multi_​close
    • curl_​multi_​errno
    • curl_​multi_​exec
    • curl_​multi_​getcontent
    • curl_​multi_​info_​read
    • curl_​multi_​init
    • curl_​multi_​remove_​handle
    • curl_​multi_​select
    • curl_​multi_​setopt
    • curl_​multi_​strerror
    • curl_​pause
    • curl_​reset
    • curl_​setopt_​array
    • curl_​setopt
    • curl_​share_​close
    • curl_​share_​errno
    • curl_​share_​init
    • curl_​share_​setopt
    • curl_​share_​strerror
    • curl_​strerror
    • curl_​unescape
    • curl_​upkeep
    • curl_​version

    Источник

    cURL — это просто

    Счетчик PR-CY.Rank

    cURL — это технология, которая предназначена для передачи/получения данных посредстов URL. Технология cURL поддерживает такие распространенные протоколы, как HTTP, FTP, HTTPs и другие. Изначально cURL был инструментом командной строки, однако разработчики PHP не поленились и создали библиотеку в PHP, чем облегчили жизнь миллионам программистам. Давайте попробуем вместе разобраться с технологией cURL на примерах. Советую читать всё и по порядку.

    Я знаю достаточно много примеров, где для получения сторонних web-страниц (парсеры) использовались совершенно другие способы, отличные от cURL. Например:

    • file_get_contents(«https://intop24.ru»);
    • file(«https://intop24.ru»);
    • readfile(«https://intop24.ru»);

    Почему разработчики использовали их и что в них не так? А потому, что не знали, либо не хотели знать, что такое cURL. А не так в них то, что функционал ограничен: получили страницу и все на этом, в то время, как cURL может отправить форму на странице, получить ответ, обработать ошибку, начать всё заново и т.д.

    Принцип работы cURL

    При использовании cURL-запросов существует 4 основных шага, которые должны (обязаны) быть в вашем скрипте, это:

    • Инициализация
    • Назначение параметров
    • Выполнение и выборка результата
    • Освобождение памяти

    Без любого из этих шагов ваш скрипт обречен на неудачу. Итак, основные шаги:

     // 1. инициализация $ch = curl_init(); // 2. указываем параметры, включая url curl_setopt($ch, CURLOPT_URL, "https://intop24.ru"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); // 3. получаем HTML в качестве результата $output = curl_exec($ch); // 4. закрываем соединение curl_close($ch); 

    Думаю что все шаги вам понятны за исключением второго: «Указания параметров». На этом шаге мы остановимся более подробно, т.к. именно он задает все необходимые настройки / параметры / методы.

    Ошибки в ходе работы скрипта

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

     $output = curl_exec($ch); // А вдруг ошибочка? if ($output === FALSE) < // Тут-то мы о ней и скажем echo 'cURL Error: ' . curl_error($ch); return; >

    Отмечу, что знак сравнения здесь ‘===’, а не ‘==’, т.е. сравнивается именно на наличие логического FALSE, а не пустой строки или строки ‘false’.

    Результат запроса

    Ну а после того, как CURL-запрос был выполнен, неплохо бы было знать, что он вернул:

     // Выполняем запрос curl_exec($ch); // Получаем информацию о запросе $info = curl_getinfo($ch); // Выводим какую-то инфомрацию echo 'Запрос выполнился за ' . $info['total_time'] . ' сек. к URL: ' . $info['url']; 

    А вот какие еще даные мы можем получить:

    Индекс массива Значение Индекс массива Значение
    url string(17) «https://intop24.ru» content_type string(24) «text/html; charset=utf-8»
    http_code int(200) header_size int(218)
    request_size int(49) filetime int(-1)
    ssl_verify_result int(0) redirect_count int(0)
    total_time float(0.009419) namelookup_time float(1.3E-5)
    connect_time float(1.3E-5) pretransfer_time float(1.4E-5)
    size_upload float(0) size_download float(46523)
    speed_download float(4939271) speed_upload float(0)
    download_content_length float(-1) upload_content_length float(0)
    starttransfer_time float(0.009374) redirect_time float(0)
    certinfo array(0) redirect_url string(0) «»

    POST запрос с помощью CURL

    Давайте напишем наш первый скрипт, который отправит данные методом POST на какую-нибудь страницу и посмотрит, что отобразилось на этой странице.

    Сначала нам нужен файл, который бы принял наши данные и что-то вывел на страницу. Я расположил его по адресу https://intop24.ru/demo/curl/post.php. В нем содержится следующий код:

     if (isset($_POST) && sizeof($_POST) > 0)

    Теперь попробуем передать туда какие-то данные:

     $url = "https://intop24.ru/demo/curl/post.php"; $post_data = array ( "foo" => "bar", "query" => "Nettuts", "action" => "Submit" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Указываем, что у нас POST запрос curl_setopt($ch, CURLOPT_POST, 1); // Добавляем переменные curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); $output = curl_exec($ch); curl_close($ch); echo $output; 

    Результат можно посмотреть здесь: curl_post.php

    Отправка файла с помощью CURL

    Смысл здесь абсолютно такой же, как и в запросе POST.

    Файл, который примет данные: https://intop24.ru/demo/curl/upload_file.php.

     print_r($_FILES); print_r($_POST); 

    Теперь попробуем передать туда какие-то данные:

     $upload = 'test_file.jpg'; $postdata = array( 'name' => 'German', 'email' => 'krutovgerman2007@ya.ru', 'message' => 'Какое-то сообщение от пользователя German', 'upload' => "@".$upload ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://intop24.ru/demo/curl/upload_file.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $output = curl_exec($ch); if ($output === FALSE) < // Тут-то мы о ней и скажем echo "cURL Error: " . curl_error($ch); return; >print_r($output); curl_close($ch); 

    Результат можно посмотреть здесь: curl_post_file.php

    Загрузка файла — это тот же самый POST-запрос, однако перед путем к файлу стоит знак «@», что и обозначает, что нужно это передать не как $_POST, а как $_FILES.

    HTTP аутентификация с помощью CURL

     $url = "https://www.site.com/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Указываем имя и пароль curl_setopt($ch, CURLOPT_USERPWD, "krutovgerman2007@yandex.ru:mypassword"); // Если перенаправление разрешено curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // То сохраним наши данные в cURL curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); $output = curl_exec($ch); curl_close($ch); 

    Запрос сURL через прокси

     $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,'https://www.example.com'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Указываем адрес curl_setopt($ch, CURLOPT_PROXY, '11.11.11.11:8080'); // Если необходимо предоставить имя пользователя и пароль curl_setopt($ch, CURLOPT_PROXYUSERPWD,'user:pass'); $output = curl_exec($ch); curl_close ($ch); 

    Крутов Герман

    Понравилась или помогла статья? Самое лучшее, что ты можешь сделать — это поделиться ею в любой из своих соцсетей (даже если ты поделишься в твиттере или google+, которыми ты не пользуешься — это очень поможет развитию моего блога). Спасибо! А если ты еще и оставишь любой комментарий снизу в обсуждениях, то это будет двойное СПАСИБО!

    Ссылка на статью на всякий случай:

    PersonКрутов Герман © 2009-2023 Emailkrutovgerman2007@ya.ru VK SocialЯ ВКонтате

    Источник

    Читайте также:  Generate xml in javascript
Оцените статью