Inhaltsverzeichnis
1. Einführung in cURL
2. cURL-Funktionsbibliothek
Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erläuterung von Beispielen für cURL, das in PHP besser als file_get_contents() ist

Detaillierte Erläuterung von Beispielen für cURL, das in PHP besser als file_get_contents() ist

Sep 11, 2017 am 09:32 AM
curl file

PHP kann die Funktion file_get_content() zum Erfassen von Webseiteninhalten verwenden, kann jedoch keine komplexeren Verarbeitungen wie das Hoch- oder Herunterladen von Dateien, Cookie-Vorgänge usw. durchführen. cURL von PHP stellt diese Funktionen bereit.

1. Einführung in cURL

 cURL ist eine Erweiterungsbibliothek für PHP. Es kann verschiedene Arten von Servern verbinden und mit ihnen kommunizieren und verschiedene Arten von Protokollen verwenden.

Es unterstützt derzeit die Protokolle http, https, ftp, gopher, telnet, dict, file und ldap sowie HTTPS-Authentifizierung, HTTP POST, FTP-Upload, Proxy, Cookies und Benutzername + Passwort-Authentifizierung usw.

2. cURL-Funktionsbibliothek

Allgemeine Funktionen

函数 描述
 curl_init()  初始化 cURL 会话
 curl_setopt()  设置 cURL 选项
 curl_exec()
 执行 cURL 会话
 curl_getinfo()   获取当前会话信息
 curl_errno()  返回最后一次的错误代码  
 curl_error()  返回当前会话最后一次的错误字符串
 curl_close()  关闭 cURL 会话


Andere Funktionen

函数 描述
curl_copy_handle() 复制一个 cURL 句柄和它的所有选项。
curl_escape() 返回转义字符串,对给定的字符串进行URL编码。
curl_file_create() 创建一个 CURLFile 对象。
curl_multi_add_handle() 向 cURL 批处理会话中添加单独的curl句柄。
curl_multi_close() 关闭一组 cURL 句柄。
curl_multi_exec() 运行当前 cURL 句柄的子连接。
curl_multi_getcontent() 如果设置了 CURLOPT_RETURNTRANSFER ,则返回获取的输出的文本流。
curl_multi_info_read() 获取当前解析的 cURL 的相关传输信息。
curl_multi_init() 返回一个新 cURL 批处理句柄。
curl_multi_remove_handle()  移除 cURL 批处理句柄资源中的某个句柄资源。
curl_multi_select() 等待所有 cURL 批处理中的活动连接。
curl_multi_setopt() 设置一个批处理 cURL 传输选项。
curl_multi_strerror() 返回描述错误码的字符串文本。
curl_pause() 暂停及恢复连接。
curl_reset() 重置 libcurl 的会话句柄的所有选项。
curl_setopt_array() 为 cURL 传输会话批量设置选项。
curl_share_close() 关闭 cURL 共享句柄。
curl_share_init() 初始化 cURL 共享句柄。
curl_share_setopt() 设置一个共享句柄的 cURL 传输选项。
curl_strerror() 返回错误代码的字符串描述。
curl_unescape() 解码 URL 编码后的字符串。
curl_version() 获取 cURL 版本信息。


3. Implementierungsprozess

1. cURL-Sitzung festlegen

3 . cURL-Informationen und/oder Fehlerinformationen abrufen (dieser Schritt ist optional)

5. Der komplizierteste Schritt ist Schritt 2. Nachfolgend finden Sie viele cURL-Einstellungsoptionen werde es anhand von Beispielen erfahren.

4. Beispiel 1: GET-Anfrage

 Der Prozess der GET-Anfrage ist der allgemeine Prozess von cURL.


Bereiten Sie im Stammverzeichnis des lokalen Servers localserver.com ein Testskript index.php mit folgendem Inhalt vor:

Der Browser greift auf die Homepage des lokalen Servers localserver.com/index zu .php und zeigt die Startseite von Baidu an.

5. Beispiel 2. POST-Anfrage

Bei der POST-Anfrage müssen zwei Optionen festgelegt werden:
<?php
    $url = &#39;http://www.baidu.com&#39;;
    // 初始化,获得一个cURL句柄
    $ch = curl_init();
    
    // 设置选项
    curl_setopt($ch, CURLOPT_URL, $url); // 请求URL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回数据流,而不直接输出
    curl_setopt($ch, CURLOPT_HEADER, 0); // 无需响应的header头
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); //连接超时,秒为单位

    // 执行并获取返回内容
    $output = curl_exec($ch);
    if($output === false){
        $output = &#39;cURL error: &#39; . curl_error($ch);
    }
    // 释放 cURL 句柄资源
    curl_close($ch);

    print_r($output);
?>
Nach dem Login kopieren

Bereiten Sie zunächst eine Empfangsanfrage im Stammverzeichnis des Remote-Servers remoteserver vor .com Das Skript index.php, der Inhalt ist wie folgt:

Schreiben Sie dann das Skript index.php für die POST-Anfrage in das Stammverzeichnis des lokalen Servers localserver.com, der Inhalt ist wie folgt :

curl_setopt($ch, CURLOPT_POST, 1); // 表明POST请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData)); // POST提交数据
Nach dem Login kopieren

Der Browser greift auf localserver.com/index.php zu und die Anzeige sieht wie folgt aus:

<?php
    $input = file_get_contents(&#39;php://input&#39;);
    echo $input;
?>
Nach dem Login kopieren

6. Beispiel 3. Dateien hochladen

<?php
    $url = &#39;http://remoteserver.com/index.php&#39;;
    $data = array(
        &#39;fname&#39;=> &#39;Daniel&#39;,
        &#39;lname&#39; => &#39;Stenberg&#39;
    );

     // 初始化
    $ch = curl_init();
    
    // 设置选项
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, 1); // POST请求
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //POST数据。用http_build_query()转换为“&”拼接的字符串

    // 执行并获取返回内容
    $output = curl_exec($ch);
    if($output === false){
        $output =  &#39;cURL error: &#39; . curl_error($ch);
    }

    // 释放 cURL 句柄资源
    curl_close($ch);

    print_r($output);
?>
Nach dem Login kopieren
Die Idee beim Hochladen von cURL-Dateien besteht darin, vor dem Dateipfad das Symbol „@“ hinzuzufügen und es im Anforderungsfeld zu installieren, um das Hochladen zu erreichen. Der Hintergrund kann hochgeladene Dateiinformationen über $_FILES abrufen. Nach PHP5.6 wird das „@“-Symbol jedoch abgeschafft und die CURLFile-Klasse kann zum Implementieren des Hochladens verwendet werden.

Bereiten Sie zunächst ein Skript index.php für den Empfang im Stammverzeichnis des Remote-Servers remoteserver.com mit folgendem Inhalt vor:
fname=Daniel&lname=Stenberg
Nach dem Login kopieren

Bereiten Sie dann ein Bild im Stammverzeichnis von vor Der lokale Server localserver.com Datei test.jpg und cURL-Upload-Skript index.php, der Skriptinhalt lautet wie folgt:

Wenn der Browser auf localserver.com/index.php zugreift, ist die Anzeige wie folgt folgt:

<?php
    $action = $_POST[&#39;action&#39;];
    if($action == &#39;uploadImage&#39;){
        $name = $_FILES[&#39;file&#39;][&#39;name&#39;];
        $tmpname = $_FILES[&#39;file&#39;][&#39;tmp_name&#39;];
        
        // 保存到当前脚本所在目录
        move_uploaded_file($tmpname, dirname(__FILE__).&#39;/&#39;.$name);

        $error = $_FILES[&#39;file&#39;][&#39;error&#39;];
        switch ($error) {
            case 0: echo &#39;上传成功&#39;; break;
            case 1: echo &#39;文件大小超出 php.ini 限制&#39;; break;
            case 2: echo &#39;文件大小超出 表单 MAX_FILE_SIZE 限制&#39;; break;
            case 3: echo &#39;文件部分被上传&#39;; break;
            case 4: echo &#39;没有文件被上传&#39;; break;
            case 6: echo &#39;找不到临时文件夹&#39;; break;
            case 7: echo &#39;文件写入失败&#39;; break;
            default: $output = &#39;未知错误&#39;;
        }
    }
?>
Nach dem Login kopieren

Remote anzeigen Im Stammverzeichnis des Servers habe ich ein zusätzliches Bild gefunden, das ich gerade hochgeladen habe.

<?php
    $url = &#39;http://remoteserver.com/index.php&#39;;
    $file = realpath(getcwd() . &#39;/test.jpg&#39;);
    $data = array(
        &#39;action&#39; => &#39;uploadImage&#39;,
        &#39;file&#39; => &#39;@&#39; . $file
    );
    if(version_compare(PHP_VERSION, &#39;5.6.0&#39;) > 0){
        $data[&#39;file&#39;] = new CURLFile($file);
    }
    
    // 初始化
    $ch = curl_init();
    
    // 设置选项
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // 执行并获取返回内容
    $output = curl_exec($ch);
    if($output === false){
        $output =  &#39;cURL error: &#39; . curl_error($ch);
    }

    // 释放 cURL 句柄资源
    curl_close($ch);

    print_r($output);
?>
Nach dem Login kopieren
7. Beispiel 4. Dateien herunterladen

Eine Idee zum Herunterladen von Dateien mit cURL besteht darin, die cURL-Option CURLOPT_FILE als Dateizeiger festzulegen, um die angeforderte Ressourcendatei einem Dateistream zuzuordnen stream ist im Allgemeinen der Rückgabewert der Funktion fopen(). Durch die Verwendung von Dateistreams zum lokalen Schreiben von Remote-Dateien können mögliche Speicherfehler beim Schreiben (Herunterladen) großer Dateien vermieden werden.
上传成功
Nach dem Login kopieren

Schreiben Sie das Testskript index.php in das Stammverzeichnis des lokalen Servers localserver.com. Der Inhalt lautet wie folgt:

Wenn der Browser auf localserver.com/index zugreift. php, die Anzeige sieht wie folgt aus:

Überprüfen Sie das Stammverzeichnis des lokalen Servers und stellen Sie fest, dass das Remote-Image heruntergeladen wurde.

<?php
    $url = &#39;http://remoteserver.com/test.jpg&#39;;
    $file = &#39;./test.jpg&#39;;
    $fp = fopen($file, &#39;w&#39;);

    // 初始化
    $ch = curl_init();

    // 设置选项
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_FILE, $fp); // 用于传输的文件流,默认是STDOUT

    // 执行并获取返回内容
    $output = curl_exec($ch);
    if($output === false){
        $output =  &#39;cURL error: &#39; . curl_error($ch);
    }

    // 获取已下载大小
    $size_download = curl_getinfo($ch, CURLINFO_SIZE_DOWNLOAD);

    // 释放资源
    fclose($fp);
    curl_close($ch); 

    if ($size_download && $size_download == filesize($file)) {
        echo "下载成功";
    } else {
        echo "下载失败或不完整";
    }   
?>
Nach dem Login kopieren
8. Beispiel 5. Stapelverarbeitung

cURL verfügt über ein Stapelhandle, indem mehrere cURL-Handles geöffnet und diese Handles an ein Stapelhandle gebunden werden, und dann nacheinander in der Schleife jede cURL-Verbindung verarbeitet werden kann Erzielen Sie eine asynchrone Stapelverarbeitung, ähnlich dem „Multithreading“.
下载成功
Nach dem Login kopieren

Schreiben Sie das Testskript index.php in das Stammverzeichnis des lokalen Servers localserver.com. Der Inhalt lautet wie folgt:

Der Browser greift auf localserver.com/index.php zu und zeigt die „Connect“-Baidu-Homepage und die Qidian.com-Homepage an.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für cURL, das in PHP besser als file_get_contents() ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So realisieren Sie die gegenseitige Konvertierung zwischen CURL- und Python-Anfragen in Python So realisieren Sie die gegenseitige Konvertierung zwischen CURL- und Python-Anfragen in Python May 03, 2023 pm 12:49 PM

Sowohl Curl als auch Pythonrequests sind leistungsstarke Tools zum Senden von HTTP-Anfragen. Während Curl ein Befehlszeilentool ist, mit dem Sie Anfragen direkt vom Terminal aus senden können, bietet die Requests-Bibliothek von Python eine eher programmatische Möglichkeit, Anfragen aus Python-Code zu senden. Die grundlegende Syntax zum Konvertieren des Curl-Befehls in den Pythonrequestscurl-Befehl lautet wie folgt: curl[OPTIONS]URL Beim Konvertieren des Curl-Befehls in eine Python-Anfrage müssen wir die Optionen und die URL in Python-Code konvertieren. Hier ist ein Beispiel für einen CurlPOST-Befehl: curl-XPOST https://example.com/api

Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Verwenden Sie die Funktion File.length() von Java, um die Größe der Datei zu ermitteln Jul 24, 2023 am 08:36 AM

Verwenden Sie die File.length()-Funktion von Java, um die Größe einer Datei zu ermitteln. Die Dateigröße ist eine sehr häufige Anforderung beim Umgang mit Dateioperationen. Java bietet eine sehr praktische Möglichkeit, die Größe einer Datei zu ermitteln, d. h. mithilfe der Länge(. )-Methode der File-Klasse. In diesem Artikel wird erläutert, wie Sie mit dieser Methode die Größe einer Datei ermitteln und entsprechende Codebeispiele angeben. Zuerst müssen wir ein File-Objekt erstellen, um die Datei darzustellen, deren Größe wir ermitteln möchten. So erstellen Sie ein File-Objekt: Filef

So konvertieren Sie einen PHP-Blob in eine Datei So konvertieren Sie einen PHP-Blob in eine Datei Mar 16, 2023 am 10:47 AM

So konvertieren Sie einen PHP-Blob in eine Datei: 1. Erstellen Sie eine PHP-Beispieldatei; 2. Über „function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' }) } ”-Methode kann zum Konvertieren von Blob in eine Datei verwendet werden.

Hongmeng native Anwendung zufälliger Poesie Hongmeng native Anwendung zufälliger Poesie Feb 19, 2024 pm 01:36 PM

Um mehr über Open Source zu erfahren, besuchen Sie bitte: 51CTO Hongmeng Developer Community https://ost.51cto.com Laufumgebung DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. Um eine Anwendung zu erstellen, klicken Sie auf Datei- >newFile->CreateProgect. Vorlage auswählen: [OpenHarmony] EmptyAbility: Geben Sie den Projektnamen, shici, den Namen des Anwendungspakets com.nut.shici und den Speicherort der Anwendung XXX ein (kein Chinesisch, Sonderzeichen oder Leerzeichen). CompileSDK10, Modell: Stage. Gerät

Tutorial zum Aktualisieren der Curl-Version unter Linux! Tutorial zum Aktualisieren der Curl-Version unter Linux! Mar 07, 2024 am 08:30 AM

Um die Curl-Version unter Linux zu aktualisieren, können Sie die folgenden Schritte ausführen: Überprüfen Sie die aktuelle Curl-Version: Zunächst müssen Sie die im aktuellen System installierte Curl-Version ermitteln. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus: curl --version Dieser Befehl zeigt die aktuellen Informationen zur Curl-Version an. Verfügbare Curl-Version bestätigen: Bevor Sie Curl aktualisieren, müssen Sie die neueste verfügbare Version bestätigen. Sie können die offizielle Website von Curl (curl.haxx.se) oder verwandte Softwarequellen besuchen, um die neueste Version von Curl zu finden. Laden Sie den Curl-Quellcode herunter: Laden Sie mit Curl oder einem Browser die Quellcodedatei für die Curl-Version Ihrer Wahl herunter (normalerweise .tar.gz oder .tar.bz2).

Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL, um HTTP-Anfragen zu stellen Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL, um HTTP-Anfragen zu stellen Jul 29, 2023 pm 05:07 PM

Von Anfang bis Ende: So verwenden Sie die PHP-Erweiterung cURL für HTTP-Anfragen. Einführung: Bei der Webentwicklung ist es häufig erforderlich, mit APIs von Drittanbietern oder anderen Remote-Servern zu kommunizieren. Die Verwendung von cURL zum Senden von HTTP-Anfragen ist eine gängige und leistungsstarke Methode. In diesem Artikel wird erläutert, wie Sie mit PHP cURL erweitern, um HTTP-Anfragen auszuführen, und einige praktische Codebeispiele bereitstellen. 1. Vorbereitung Stellen Sie zunächst sicher, dass PHP die cURL-Erweiterung installiert hat. Zur Überprüfung können Sie php-m|grepcurl in der Befehlszeile ausführen

PHP8.1 veröffentlicht: Einführung von Curl für die gleichzeitige Verarbeitung mehrerer Anfragen PHP8.1 veröffentlicht: Einführung von Curl für die gleichzeitige Verarbeitung mehrerer Anfragen Jul 08, 2023 pm 09:13 PM

PHP8.1 veröffentlicht: Einführung von Curl für die gleichzeitige Verarbeitung mehrerer Anfragen Vor kurzem hat PHP offiziell die neueste Version von PHP8.1 veröffentlicht, die eine wichtige Funktion eingeführt hat: Curl für die gleichzeitige Verarbeitung mehrerer Anfragen. Diese neue Funktion bietet Entwicklern eine effizientere und flexiblere Möglichkeit, mehrere HTTP-Anfragen zu verarbeiten und verbessert so die Leistung und das Benutzererlebnis erheblich. In früheren Versionen erforderte die Bearbeitung mehrerer Anfragen häufig die Erstellung mehrerer Curl-Ressourcen und die Verwendung von Schleifen zum Senden bzw. Empfangen von Daten. Obwohl diese Methode den Zweck erreichen kann

Benennen Sie Dateien mit der Java-Funktion File.renameTo() um Benennen Sie Dateien mit der Java-Funktion File.renameTo() um Jul 25, 2023 pm 03:45 PM

Verwenden Sie die Funktion File.renameTo() von Java, um Dateien umzubenennen. In der Java-Programmierung müssen wir häufig Dateien umbenennen. Java stellt die File-Klasse für die Verarbeitung von Dateioperationen bereit, und die Funktion renameTo() kann Dateien problemlos umbenennen. In diesem Artikel wird die Verwendung der Java-Funktion File.renameTo() zum Umbenennen von Dateien vorgestellt und entsprechende Codebeispiele bereitgestellt. Die Funktion File.renameTo() ist eine Methode der File-Klasse.

See all articles