Что такое cURL в PHP?

В PHP я вижу слово cURL во многих проектах PHP. Что это? Как это работает?

Ссылка Ссылка: cURL

Ответ 1

cURL - это библиотека, которая позволяет вам делать HTTP-запросы в PHP. Все, что вам нужно знать об этом (и большинстве других расширений), можно найти в руководстве PHP.

Чтобы использовать функции PHP cURL вам нужно установить libcurl пакет. PHP требует, чтобы вы использовали libcurl 7.0.2-бета или выше. В PHP 4.2.3 вам понадобится libcurl версии 7.9.0 или выше. Из PHP 4.3.0 вам понадобится версия libcurl, которая 7,9,8 или выше. Для PHP 5.0.0 требуется версия libcurl версии 7.10.5 или выше.

Вы также можете создавать HTTP-запросы без cURL, хотя для allow_url_fopen требуется allow_url_fopen включить <.txt > .

// Make a HTTP GET request and print it (requires allow_url_fopen to be enabled)
print file_get_contents('http://www.example.com/');

Ответ 2

cURL - это способ, которым вы можете ударить URL-адрес из своего кода, чтобы получить от него html-ответ. cURL означает URL-адрес клиента, который позволяет вам подключаться к другим URL-адресам и использовать их ответы в вашем коде.

Ответ 3

CURL в PHP:

Резюме:

Команда curl_exec в PHP - это мост для использования curl из консоли. curl_exec позволяет легко и быстро выполнять запросы GET/POST, получать ответы от других серверов, таких как JSON, и загружать файлы.

Предупреждение, опасность:

curl - это зло и опасно, если его использовать не по назначению, потому что это все о получении данных из Интернета. Кто-то может встать между вашим curl и другим сервером и rm -rf/ в ваш ответ, а затем, почему я ls -l на консоль, а ls -l больше не работает? Потому что вы недооценили опасную силу скручивания. Не доверяйте ничему, что возвращается из curl, чтобы быть в безопасности, даже если вы разговариваете со своими собственными серверами. Вы могли бы отбросить вредоносные программы, чтобы освободить дураков от их богатства.

Примеры:

Это было сделано на Ubuntu 12.10

  1. Базовый локон из командной строки:

    [email protected]:/home/el$ curl http://i.imgur.com/4rBHtSm.gif > mycat.gif
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  492k  100  492k    0     0  1077k      0 --:--:-- --:--:-- --:--:-- 1240k
    

    Затем вы можете открыть свой GIF в Firefox:

    firefox mycat.gif
    

    Славные кошки, развивающие Toxoplasma gondii, заставляют женщин держать кошек вокруг, а мужчины - также держать женщин вокруг.

  2. Пример cURL: получить запрос на google.com, повторить в командной строке:

    Это делается через терминал phpsh:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');
    
    php> curl_exec($ch);
    

    Который печатает и выводит беспорядок сжатого HTML и JavaScript (из Google) в консоль.

  3. Пример cURL помещает текст ответа в переменную:

    Это делается через терминал phpsh:

    php> $ch = curl_init();
    
    php> curl_setopt($ch, CURLOPT_URL, 'http://i.imgur.com/wtQ6yZR.gif');
    
    php> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    php> $contents = curl_exec($ch);
    
    php> echo $contents;
    

    Переменная теперь содержит двоичный файл, который представляет собой анимированный GIF файл кошки, возможности безграничны.

  4. Сделайте завиток из файла PHP:

    Поместите этот код в файл с именем myphp.php:

    <?php
      $curl_handle=curl_init();
      curl_setopt($curl_handle,CURLOPT_URL,'http://www.google.com');
      curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
      curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
      $buffer = curl_exec($curl_handle);
      curl_close($curl_handle);
      if (empty($buffer)){
          print "Nothing returned from url.<p>";
      }
      else{
          print $buffer;
      }
    ?>
    

    Затем запустите его через командную строку:

    php < myphp.php
    

    Вы запустили myphp.php и выполнили эти команды через интерпретатор php и выбросили на экран кучу грязных html и javascript.

    Вы можете выполнять запросы GET и POST с помощью curl, все, что вам нужно сделать, это указать параметры, как здесь определено: Использование curl для автоматизации заданий HTTP

Напоминание об опасности:

Будьте внимательны при выводе локонов, если какой-либо из них будет интерпретирован и исполнен, ваша коробка будет принадлежать, а информация о вашей кредитной карте будет продана третьим сторонам, и вы получите таинственную плату в размере 900 долларов США от компании по производству напольных покрытий из Алабамы, которая фронт за рубежом мошенничество с кредитными картами преступности кольцо.

Ответ 4

cURL - это способ, которым вы можете нажать URL-адрес из своего кода, чтобы получить от него ответ в формате HTML. Используется для командной строки cURL с языка PHP.

<?php
// Step 1
$cSession = curl_init(); 
// Step 2
curl_setopt($cSession,CURLOPT_URL,"http://www.google.com/search?q=curl");
curl_setopt($cSession,CURLOPT_RETURNTRANSFER,true);
curl_setopt($cSession,CURLOPT_HEADER, false); 
// Step 3
$result=curl_exec($cSession);
// Step 4
curl_close($cSession);
// Step 5
echo $result;
?> 

Шаг 1: Инициализируйте сеанс curl с помощью curl_init().

Шаг 2: Установите опцию для CURLOPT_URL. Это значение является URL-адресом, на который мы отправляем запрос. Добавьте поисковый термин curl используя параметр q=. Установите опцию для CURLOPT_RETURNTRANSFER. True сообщит curl, что нужно вернуть строку, а не выводить ее. Установите опцию для CURLOPT_HEADER, false скажет curl игнорировать заголовок в возвращаемом значении.

Шаг 3: Выполните сеанс curl с помощью curl_exec().

Шаг 4: Закройте сеанс скручивания, который мы создали.

Шаг 5: Выведите возвращаемую строку.

public function curlCall($apiurl, $auth, $rflag)
{
    $ch = curl_init($apiurl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    if($auth == 'auth') { 
        curl_setopt($ch, CURLOPT_USERPWD, "passw:passw");
    } else {
        curl_setopt($ch, CURLOPT_USERPWD, "ss:ss1");
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $dt = curl_exec($ch);        
    curl_close($ch);
    if($rflag != 1) {
        $dt = json_decode($dt,true);        
    }
    return $dt;
}

Это также используется для аутентификации. Мы также можем установить имя пользователя и пароль для аутентификации.

Для получения дополнительной информации см. Руководство пользователя или следующий учебник:

http://php.net/manual/en/ref.curl.php
http://www.startutorial.com/articles/view/php-curl

Ответ 5

Во-первых, давайте разберемся с понятиями curl, libcurl и PHP/cURL.

  1. curl: инструмент командной строки для получения или отправки файлов с использованием синтаксиса URL.

  2. libcurl: библиотека, созданная Дэниелом Стенбергом, которая позволяет вам подключаться и взаимодействовать с множеством разных типов серверов с множеством разных типов протоколов. В настоящее время libcurl поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap. libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это также можно сделать с расширением PHP ftp), загрузку на основе форм HTTP, прокси-серверы, файлы cookie и аутентификацию пользователя + пароль.

  3. PHP/cURL: модуль для PHP, позволяющий программам PHP использовать libcurl.

Как это использовать:

Шаг 1: Инициализируйте сеанс curl с помощью curl_init().

Шаг 2: Установите опцию для CURLOPT_URL. Это значение является URL-адресом, на который мы отправляем запрос. Добавьте поисковый термин "curl", используя параметр "q =". Установите параметр CURLOPT_RETURNTRANSFER, значение true сообщит curl, что нужно вернуть строку вместо ее распечатки. Установите опцию для CURLOPT_HEADER, false скажет curl игнорировать заголовок в возвращаемом значении.

Шаг 3: Выполнить сеанс curl с помощью curl_exec().

Шаг 4: Закройте сессию завитка, которую мы создали.

Шаг 5: Вывести возвращаемую строку.

Сделать ДЕМО:

Вам нужно будет создать два файла PHP и поместить их в папку, из которой ваш веб-сервер может обслуживать файлы PHP. В моем случае я поместил их в /var/www/для простоты.

1. helloservice.php и 2. demo.php

helloservice.php очень прост и по сути просто отображает любые данные, которые он получает:

<?php
  // Here is the data we will be sending to the service
  $some_data = array(
    'message' => 'Hello World', 
    'name' => 'Anand'
  );  

  $curl = curl_init();
  // You can also set the URL you want to communicate with by doing this:
  // $curl = curl_init('http://localhost/echoservice');

  // We POST the data
  curl_setopt($curl, CURLOPT_POST, 1);
  // Set the url path we want to call
  curl_setopt($curl, CURLOPT_URL, 'http://localhost/demo.php');  
  // Make it so the data coming back is put into a string
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  // Insert the data
  curl_setopt($curl, CURLOPT_POSTFIELDS, $some_data);

  // You can also bunch the above commands into an array if you choose using: curl_setopt_array

  // Send the request
  $result = curl_exec($curl);

  // Get some cURL session information back
  $info = curl_getinfo($curl);  
  echo 'content type: ' . $info['content_type'] . '<br />';
  echo 'http code: ' . $info['http_code'] . '<br />';

  // Free up the resources $curl is using
  curl_close($curl);

  echo $result;
?>

Страница 2.demo.php, вы можете увидеть результат:

<?php 
   print_r($_POST);
   //content type: text/html; charset=UTF-8
   //http code: 200
   //Array ( [message] => Hello World [name] => Anand )
?>

Ответ 6

Расширение cURL для PHP предназначено для использования различных веб-ресурсов из вашего PHP script.

Ответ 7

cURL в PHP является мостом для использования командной строки cURL с языка php

Ответ 8

завивать

  • cURL - это способ, которым вы можете нажать URL-адрес из своего кода, чтобы получить от него ответ в формате HTML.
  • Используется для командной строки cURL с языка PHP.
  • cURL - это библиотека, которая позволяет вам делать HTTP-запросы в PHP.

PHP поддерживает libcurl, библиотеку, созданную Дэниелом Стенбергом, которая позволяет вам подключаться и взаимодействовать с множеством разных типов серверов с множеством разных типов протоколов. В настоящее время libcurl поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap. libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это также можно сделать с расширением PHP ftp), загрузку на основе форм HTTP, прокси-серверы, файлы cookie и аутентификацию пользователя + пароль.

После того, как вы скомпилировали PHP с поддержкой cURL, вы можете начать использовать функции cURL. Основная идея функций cURL заключается в том, что вы инициализируете сеанс cURL с помощью curl_init(), затем вы можете установить все параметры передачи с помощью curl_setopt(), затем вы можете выполнить сеанс с помощью curl_exec(), а затем вы завершите сеанс с помощью curl_close().

Образец кода

// error reporting
error_reporting(E_ALL);
ini_set("display_errors", 1);

//setting url
$url = 'http://example.com/api';

//data
$data = array("message" => "Hello World!!!");

try {
    $ch = curl_init($url);
    $data_string = json_encode($data);

    if (FALSE === $ch)
        throw new Exception('failed to initialize');

        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);

        $output = curl_exec($ch);

    if (FALSE === $output)
        throw new Exception(curl_error($ch), curl_errno($ch));

    // ...process $output now
} catch(Exception $e) {

    trigger_error(sprintf(
        'Curl failed with error #%d: %s',
        $e->getCode(), $e->getMessage()),
        E_USER_ERROR);
}

Для получения дополнительной информации, пожалуйста, проверьте -

Ответ 9

Curl - это не что иное, как расширение PHP, которое наследует поведение нормальной команды curl и библиотеки, написанной в первую очередь для инструмента командной строки Linux/Unix

Что такое завиток? cURL для URL-адреса клиента. CURL используется для отправки данных на любой URL-адрес. Для более подробной информации о том, что такое скручивание, вы можете посетить CURL Website

cURL в PHP Теперь такая же концепция внедрена в PHP, чтобы отправлять данные на любой доступный URL через другой протокол, например HTTP или FTP. Для более подробной информации вы можете обратиться к PHP Curl Tutorial

Ответ 10

Класс php curl (GET, POST, ЗАГРУЗКА ФАЙЛОВ, СЕССИИ, ОТПРАВКА POST JSON, FORCE SELFSIGNED SSL/TLS):

<?php
    // Php curl class
    class Curl {

        public $error;

        function __construct() {}

        function Get($url = "http://hostname.x/api.php?q=jabadoo&txt=gin", $forceSsl = false,$cookie = "", $session = true){
            // $url = $url . "?". http_build_query($data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);        
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){            
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            $info = curl_getinfo($ch);
            $res = curl_exec($ch);        
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            }        
        }

        function GetArray($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
            $url = $url . "?". http_build_query($data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            $info = curl_getinfo($ch);
            $res = curl_exec($ch);        
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            }        
        }

        function PostJson($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $forceSsl = false, $cookie = "", $session = true){
            $data = json_encode($data);
            $ch = curl_init($url);                                                                      
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);                                                                  
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Authorization: Bearer helo29dasd8asd6asnav7ffa',                                                      
                'Content-Type: application/json',                                                                                
                'Content-Length: ' . strlen($data))                                                                       
            );        
            $res = curl_exec($ch);
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            } 
        }

        function Post($url = "http://hostname.x/api.php", $data = array("name" => "Max", "age" => "36"), $files = array('ads/ads0.jpg', 'ads/ads1.jpg'), $forceSsl = false, $cookie = "", $session = true){
            foreach ($files as $k => $v) {
                $f = realpath($v);
                if(file_exists($f)){
                    $fc = new CurlFile($f, mime_content_type($f), basename($f)); 
                    $data["file[".$k."]"] = $fc;
                }
            }
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");        
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
            curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // !!!! required as of PHP 5.6.0 for files !!!
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)");
            curl_setopt($ch, CURLOPT_TIMEOUT, 60);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
            if($session){
                curl_setopt($ch, CURLOPT_COOKIESESSION, true );
                curl_setopt($ch , CURLOPT_COOKIEJAR, 'cookies.txt');
                curl_setopt($ch , CURLOPT_COOKIEFILE, 'cookies.txt');
            }
            if($forceSsl){
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 1, 2
            }
            if(!empty($cookie)){
                curl_setopt($ch, CURLOPT_COOKIE, $cookie); // "token=12345"
            }
            $res = curl_exec($ch);
            if (curl_error($ch)) {
                $this->error = curl_error($ch);
                throw new Exception($this->error);
            }else{
                curl_close($ch);
                return $res;
            } 
        }
    }
?>

Пример:

<?php
    $urlget = "http://hostname.x/api.php?id=123&user=bax";
    $url = "http://hostname.x/api.php";
    $data = array("name" => "Max", "age" => "36");
    $files = array('ads/ads0.jpg', 'ads/ads1.jpg');

    $curl = new Curl();
    echo $curl->Get($urlget, true, "token=12345");
    echo $curl->GetArray($url, $data, true);
    echo $curl->Post($url, $data, $files, true);
    echo $curl->PostJson($url, $data, true);
?>

PHP файл: api.php

<?php
    /*
    $Cookie = session_get_cookie_params();
    print_r($Cookie);
    */
    session_set_cookie_params(9000, '/', 'hostname.x', isset($_SERVER["HTTPS"]), true);
    session_start();

    $_SESSION['cnt']++;
    echo "Session count: " . $_SESSION['cnt']. "\r\n";
    echo $json = file_get_contents('php://input');
    $arr = json_decode($json, true);
    echo "<pre>";
    if(!empty($json)){ print_r($arr); }
    if(!empty($_GET)){ print_r($_GET); }
    if(!empty($_POST)){ print_r($_POST); }
    if(!empty($_FILES)){ print_r($_FILES); }
    // request headers
    print_r(getallheaders());
    print_r(apache_response_headers());
    // Fetch a list of headers to be sent.
    // print_r(headers_list());
?>

Ответ 11

Функция PHP curl (POST, GET, DELETE, PUT)

function curl($post = array(), $url, $token = '', $method = "POST", $json = false, $ssl = true){
    $ch = curl_init();  
    curl_setopt($ch, CURLOPT_URL, $url);    
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    if($method == 'POST'){
        curl_setopt($ch, CURLOPT_POST, 1);
    }
    if($json == true){
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json','Authorization: Bearer '.$token,'Content-Length: ' . strlen($post)));
    }else{
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSLVERSION, 6);
    if($ssl == false){
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    }
    // curl_setopt($ch, CURLOPT_HEADER, 0);     
    $r = curl_exec($ch);    
    if (curl_error($ch)) {
        $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $err = curl_error($ch);
        print_r('Error: ' . $err . ' Status: ' . $statusCode);
        // Add error
        $this->error = $err;
    }
    curl_close($ch);
    return $r;
}