Heim >Backend-Entwicklung >PHP-Tutorial >cURL-Bibliothek in PHP

cURL-Bibliothek in PHP

不言
不言Original
2018-04-09 15:51:371851Durchsuche

Dieser Artikel stellt Ihnen die cURL-Bibliothek in PHP vor. Jetzt können Freunde in Not darauf zurückgreifen.

Einführung

Ursprünglich cURL (Client URL Library) war ein Befehlszeilentool zum Übertragen von Daten mithilfe der URL-Syntax. Über die cURL-Bibliothek können wir ein bestimmtes Protokoll in PHP-Skripten frei verwenden, um Daten abzurufen oder zu übermitteln, beispielsweise um HTTP-Anforderungsdaten abzurufen. Einfach ausgedrückt ist cURL ein Tool, mit dem Clients Ressourcen von Servern anfordern können.

PHP unterstützt die von Daniel Stenberg erstellte libcurl-Bibliothek, die eine Verbindung zu verschiedenen Servern herstellen und verschiedene Protokolle verwenden kann. Zu den derzeit von libcurl unterstützten Protokollen gehören http, https, ftp, gopher, telnet, dict, file und ldap. libcurl unterstützt außerdem HTTPS-Zertifikate, HTTP POST, HTTP PUT, FTP-Upload (kann auch über die FTP-Erweiterung von PHP durchgeführt werden), HTTP-Formular-Upload, Proxy, Cookies, Benutzername + Passwort-Authentifizierung.

Vorteile

In PHP ist es eigentlich sehr einfach, den Inhalt einer URL abzurufen. Es gibt viele Möglichkeiten, dies zu erreichen, beispielsweise die Verwendung der

-Funktion:

file_get_contents()

Obwohl die
<?php
$content = file_get_contents("https://segmentfault.com");
var_dump($content);
-Funktion sehr komfortabel zu verwenden ist, ist sie nicht flexibel genug und kann nicht mit Fehlern umgehen. Bei einigen komplexen Anfragen können weder Anfrageheader, Cookies, Proxys, Authentifizierung und andere zugehörige Informationen festgelegt werden, noch können Formulardaten an einen Server übermittelt oder Dateien hochgeladen werden.

file_get_contents()Die cURl-Bibliothek unterstützt nicht nur umfangreiche Netzwerkprotokolle, sondern bietet auch Methoden zum Festlegen verschiedener URL-Anforderungsparameter, was leistungsstark ist. Es gibt viele Verwendungsszenarien für cURL, z. B. den Zugriff auf Webressourcen, das Abrufen von WebService-Schnittstellendaten und das Herunterladen von FTP-Serverdateien.

Grundlegende Schritte zur Verwendung von

Um cURL zum Senden von URL-Anfragen zu verwenden, sind die Schritte grob in die folgenden vier Schritte unterteilt:

    Initialisierung der cURL-Sitzung;
  1. Anforderungsoptionen festlegen; >CURL-Sitzung schließen.
  2. cURL legt Anforderungsoptionen hauptsächlich über die Funktion

    fest. Spezifische Beschreibungen der einzelnen Optionen finden Sie unter http://php.net/manual/zh/func. ..

  3. Fehlerbehandlung
  4. Die Fehlerdetails der cURL-Sitzung können über die Funktion

    und die Antwortinformationen über die Funktion
  5. angezeigt werden. Daher können wir über diese beiden Funktionen einen einfachen Fehlerhandler implementieren. Wenn wir nun auf eine nicht vorhandene URL-Adresse zugreifen:
// 1. 初始化 cURL 会话
$ch = curl_init();

// 2. 设置请求选项
curl_setopt($ch, CURLOPT_URL, "https://segmentfault.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); # 获取的信息以字符串返回,而不是直接输出
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); # 禁止 cURL 验证对等证书,从而支持 HTTPS 访问

// 3. 执行 cURL 会话
$response = curl_exec($ch);
var_dump($response);

// 4. 关闭 cURL 会话
curl_close($ch);
Praktischer Fallcurl_setopt()
POST-Anfrage

Verwenden Sie cURL, um das Senden einer POST-Anfrage zu simulieren:

curl_error()curl_getinfo()2. Datei-Upload

<?php

// 1. 初始化 cURL 会话
$ch = curl_init();

// 2. 设置请求选项
curl_setopt($ch, CURLOPT_URL, "https://segmentfault.com/test.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); # 获取的信息以字符串返回,而不是直接输出
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); # 禁止 cURL 验证对等证书,从而支持 HTTPS 访问

// 3. 执行 cURL 会话
$response = curl_exec($ch);

if ($response  === FALSE) {
    echo "cURL connert error: " . curl_error($ch);
    exit;
}

$info = curl_getinfo($ch);
if ($info[&#39;http_code&#39;] == 404) {
    echo &#39;HTTP 404&#39;;
    exit;
}

var_dump($response);

// 4. 关闭 cURL 会话
curl_close($ch);
CURLOPT_POSTFIELDS: Alle Daten werden mithilfe der „POST“-Operation im HTTP-Protokoll gesendet. Um eine Datei zu senden, stellen Sie dem Dateinamen ein @ voran und verwenden Sie den vollständigen Pfad. Der Dateityp kann im Format „;type=mimetype“ hinter dem Dateinamen angegeben werden. Dieser Parameter kann eine URL-codierte Zeichenfolge sein, ähnlich wie „val1=1&val2=2&...“, oder Sie können ein Array mit dem Feldnamen als Schlüssel und den Felddaten als Wert verwenden.

Senden Sie eine POST-Anfrage über cURL, um den Datei-Upload zu implementieren:

3. Datei-Download

<?php
function curl_post($url, $data) {
    $ch = curl_init(); 

    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回
        CURLOPT_POST => 1,           # 发送 POST 请求
        CURLOPT_POSTFIELDS => $data, # POST 请求数据 
    ]);

    $response = curl_exec($ch);
    
    curl_close($ch);
    
    return $response;
}

$url  = &#39;http://localhost/test.php&#39;;
$data = [&#39;id&#39; => 1, &#39;username&#39; => &#39;jochen&#39;];
echo curl_post($url, $data);
Eigentlich ist der Datei-Download derselbe wie eine normale GET-Anfrage, nur Datei-Download Speichern Sie den zurückgegebenen Inhalt in einer Datei, anstatt ihn einfach auszugeben. Arbeiten Sie mit der Funktion

zusammen, um den Dateidownload zu implementieren:

4. HTTP-Authentifizierung

Wenn der Server die Anfrage überprüfen muss, legen Sie einfach den Parameter
<?php
function curl_upload($url, $data) {
    $ch = curl_init(); 

    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回
        CURLOPT_POST => 1,           # 发送 POST 请求
        CURLOPT_POSTFIELDS => $data, # POST 请求数据 
    ]);

    $response = curl_exec($ch);
    
    curl_close($ch);
    
    return $response;
}

$url  = &#39;http://localhost/test.php&#39;;
$data = [&#39;id&#39; => 1, &#39;file&#39; => &#39;@/root/image/boy.jpg&#39;];
echo curl_post($url, $data);
fest:

5. Simulierte Anmeldung file_put_contents()

Hier zeigen wir hauptsächlich Anwendungen, die Cookies verwenden, um den Anmeldestatus aufrechtzuerhalten. Zuerst müssen wir uns mit dem Konto und dem Passwort anmelden, um die Cookie-Daten abzurufen, und dann das angemeldete Cookie verwenden, um die Seitendaten abzurufen:
56b62e99cd671c33a22cc122cd1dca25 $url,
        CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回
    ]);

    $response = curl_exec($ch);
    
    curl_close($ch);
    
    return file_put_contents($path, $response);
}

curl_download('http://localhost/boy.jpg', './boy.jpg');

cURL-Verpackungsbibliothek

CURLOPT_USERPWD PHP Curl Class ist eine gut geschriebene cURL-Wrapper-Bibliothek, die das Senden von HTTP-Anfragen und die Integration in jede Art von Web-API sehr bequem macht. Die Wrapper-Bibliothek der PHP-Curl-Klasse ist für PHP 5.3, 5.4, 5.5, 5.6, 7.0, 7.1 und HHVM verfügbar. Diese Bibliothek ist bekannt und bietet eine sehr einfache Syntax:

<?php
function curl_auth($url, $user, $passwd) {
    $ch = curl_init();
    
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_USERPWD => "$user:$passwd", # 格式为:"[username]:[password]"
        CURLOPT_RETURNTRANSFER => 1
    ]);
    
    $result = curl_exec($ch);
    
    curl_close($ch);
    
    return $result;
}

echo curl_auth(&#39;http://localhost&#39;, &#39;jochen&#39;, &#39;password&#39;);

Referenzartikel:

<?php
// 模拟登录获取 Cookie
function curl_login($url, $data, $cookie) {
    $ch = curl_init(); 

    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_POST => 1,           # 发送 POST 请求
        CURLOPT_POSTFIELDS => $data, # POST 请求数据 
        CURLOPT_COOKIEJAR => $cookie # 将 cookie 信息保存至文件中
        CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回
    ]);

    $response = curl_exec($ch);
    
    curl_close($ch);
    
    return $response;
}

// 获取页面数据
function curl_content($url, $cookie) {
    $ch = curl_init(); 
    
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_COOKIEFILE => $cookie # 加载包含 Cookie 数据的文件
        CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回
    ]);

    $response = curl_exec($ch);
    
    curl_close($ch);
    
    return $response;
}

$post = [&#39;username&#39; => &#39;jochen&#39;, &#39;password&#39; => &#39;123456&#39;];
$cookie = &#39;./cookie.txt&#39;;
if (curl_login(&#39;http://localhost/login&#39;, $post,  $cookie)) {
    echo curl_content(&#39;http://localhost&#39;, $cookie);
}
Client-URL-Bibliothek

Einführendes Tutorial und allgemeine Anwendungsbeispiele für Curl in PHP
<?php
require __DIR__ . &#39;/vendor/autoload.php&#39;;

use \Curl\Curl;

$curl = new Curl();
$curl->get(&#39;https://www.example.com/&#39;);

if ($curl->error) {
    echo &#39;Error: &#39; . $curl->errorCode . &#39;: &#39; . $curl->errorMessage . "\n";
} else {
    echo &#39;Response:&#39; . "\n";
    var_dump($curl->response);
}

    Mit CURL in PHP sind nur wenige Zeilen erforderlich, um den Server zu „täuschen“ – detaillierte Analyse von PHP Curl und häufige Anwendungsbeispiele Fallstricke
  1. Top 7: Beste Curl Wrapper-Bibliotheken für PHP
  2. Verwandte Empfehlungen:

  3. PHP Parallelität nutzt Curl, um die Back-End-Zugriffszeit zu verkürzen
  4. PHP simuliert die Anmeldung und ruft Daten über CURL ab

Das obige ist der detaillierte Inhalt voncURL-Bibliothek in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn