国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP 中的 cURL 庫

happen / 404人閱讀

摘要:支持創建的庫,能夠連接通訊各種服務器使用各種協議。目前支持的協議有。在一些復雜的請求中,不能夠設置請求頭代理認證等相關信息,更不能向某個服務器提交表單數據,上傳文件。文件類型可在文件名后以的格式指定。

概述 簡介

在設計之初,cURL (Client URL Library)是一種作為使用 URL 語法傳輸數據的命令行工具。通過 cURL 庫,我們可以在 PHP 腳本中自由地使用某種協議來獲取或者提交數據,比如獲取 HTTP 請求數據。簡單的來說,cURL 是客戶端向服務器請求資源的工具。

PHP 支持 Daniel Stenberg 創建的 libcurl 庫,能夠連接通訊各種服務器、使用各種協議。libcurl 目前支持的協議有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同時支持 HTTPS 證書、HTTP POST、HTTP PUT、 FTP 上傳(也能通過 PHP 的 FTP 擴展完成)、HTTP 基于表單的上傳、代理、cookies、用戶名+密碼的認證。
優勢

在 PHP 中,想要獲取某個 URL 的內容其實很簡單,有多種實現方法,比如使用 file_get_contents() 函數:


雖然 file_get_contents() 函數使用起來很方便,但是不夠靈活,也沒法進行錯誤處理。在一些復雜的請求中,不能夠設置請求頭、Cookie、代理、認證等相關信息,更不能向某個服務器提交表單數據,上傳文件。

cURl 庫不但支持豐富的網絡協議,而且提供了設置各種 URL 請求參數的方法,功能強大。cURL 的使用場景有很多,比如訪問網頁資源,獲取 WebService 接口數據、下載 FTP 服務器文件。

使用 基本步驟

要使用 cURL 來發送 URL 請求,步驟大體分為以下四步:

初始化 cURL 會話;

設置請求選項;

執行 cURL 會話;

關閉 cURL 會話。

// 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);
cURL 主要通過 curl_setopt() 函數設置請求選項,具體的每個選項說明請見 http://php.net/manual/zh/func...
錯誤處理

通過 curl_error() 函數可以查看 cURL 會話錯誤詳情,而 curl_getinfo() 函數可以查看響應信息。因此,通過這兩個函數我們可以實現一個簡單的錯誤處理程序,比如我們現在訪問一個不存在的 URL 地址:


實戰案例
1. POST 請求

使用 cURL 模擬發送 POST 請求:

 $url,
        CURLOPT_RETURNTRANSFER => 1, # 獲取的信息以字符串返回
        CURLOPT_POST => 1,           # 發送 POST 請求
        CURLOPT_POSTFIELDS => $data, # POST 請求數據 
    ]);

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

$url  = "http://localhost/test.php";
$data = ["id" => 1, "username" => "jochen"];
echo curl_post($url, $data);
2. 文件上傳
CURLOPT_POSTFIELDS:全部數據使用 HTTP 協議中的 "POST" 操作來發送。 要發送文件,在文件名前面加上@前綴并使用完整路徑。 文件類型可在文件名后以 ";type=mimetype" 的格式指定。 這個參數可以是 urlencoded 后的字符串,類似"val1=1&val2=2&...",也可以使用一個以字段名為鍵值,字段數據為值的數組。

通過 cURL 發送 POST 請求來實現文件上傳:

 $url,
        CURLOPT_RETURNTRANSFER => 1, # 獲取的信息以字符串返回
        CURLOPT_POST => 1,           # 發送 POST 請求
        CURLOPT_POSTFIELDS => $data, # POST 請求數據 
    ]);

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

$url  = "http://localhost/test.php";
$data = ["id" => 1, "file" => "@/root/image/boy.jpg"];
echo curl_post($url, $data);
3. 文件下載

其實,文件下載與普通 GET 請求是一樣的,只是文件下載把返回內容保存至文件中,而不是簡單的輸出。配合 file_put_contents() 函數實現文件下載:

 $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");
4. HTTP 認證

如果服務器端需要驗證請求,設置 CURLOPT_USERPWD 參數即可:

 $url,
        CURLOPT_USERPWD => "$user:$passwd", # 格式為:"[username]:[password]"
        CURLOPT_RETURNTRANSFER => 1
    ]);
    
    $result = curl_exec($ch);
    
    curl_close($ch);
    
    return $result;
}

echo curl_auth("http://localhost", "jochen", "password");
5. 模擬登錄

這里主要展示模擬登錄使用了 Cookie 來保持登錄狀態的應用。首先我們需要通過賬號密碼登錄獲取到 Cookie 數據,然后利用已登錄的 Cookie 獲取頁面數據:

 $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 = ["username" => "jochen", "password" => "123456"];
$cookie = "./cookie.txt";
if (curl_login("http://localhost/login", $post,  $cookie)) {
    echo curl_content("http://localhost", $cookie);
}
cURL 封裝庫

PHP Curl Class 是一個編寫得很好的 cURL 封裝庫,它可以非常方便地發送 HTTP 請求并與任何類型的 Web API 集成。PHP Curl Class 封裝庫適用于 PHP 5.3,5.4,5.5,5.6,7.0,7.1 和 HHVM。這個庫是眾所周知的,并提供了一個非常簡單的語法:

get("https://www.example.com/");

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

參考文章:

Client URL 庫

php中的curl使用入門教程和常見用法實例

在PHP中使用CURL,“撩”服務器只需幾行——php curl詳細解析和常見大坑

Top 7: Best Curl Wrapper Libraries for PHP

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28555.html

相關文章

  • php平滑升級

    摘要:錯誤發生點在建立是出錯,沒給到要的函式庫參數。第二種解決方法升級情況說明是默認使用安裝為,現有項目需要支持。當前版本輸出信息下載最新的開始升級關閉開啟刪除原有的動態庫將新動態庫放到對應位置刷新動態庫添加升級后查看版本版本信息 php平滑升級 1.既然是平滑升級,是不需要宕機,也不需要停止服務,是不存在關閉網站的說法 2.而升級最后的重啟,重啟的是PHP加載的配置文件,不影響你當前運行的...

    AlexTuan 評論0 收藏0
  • PHP回顧之IO

    摘要:命令行時返回值為,標準輸入輸出均指向終端可用進程號查看。會在腳本執行完畢后關閉三個流,無需用戶手動關閉。與遠程網址交互是一個請求和響應的過程,其中細節可參考本人之前的文章回顧之請求和回顧之響應,也可參考協議的權威文檔。 轉載請注明文章出處: https://tlanyan.me/php-review... PHP回顧系列目錄 PHP基礎 web請求 cookie web響應 ses...

    happen 評論0 收藏0
  • 基于haddop的HDFS和Excel開源POI導出大數據報表(一)

    摘要:說明這里用到的項目都是基于的項目。但同時,它和其他的分布式文件系統的區別也是很明顯的。能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。放寬了一部分約束,來實現流式讀取文件系統數據的目的。是項目的一部分。 關鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報表 需求背景 在業務需求方面,每個企業或多或少都會有報表導出的作業,量少則可是使用輸出流或者字符串的...

    Nekron 評論0 收藏0
  • 基于haddop的HDFS和Excel開源POI導出大數據報表(一)

    摘要:說明這里用到的項目都是基于的項目。但同時,它和其他的分布式文件系統的區別也是很明顯的。能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。放寬了一部分約束,來實現流式讀取文件系統數據的目的。是項目的一部分。 關鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報表 需求背景 在業務需求方面,每個企業或多或少都會有報表導出的作業,量少則可是使用輸出流或者字符串的...

    luffyZh 評論0 收藏0
  • PHP7.0.0在OS X編譯安裝

    摘要:目前支持和協議。除此以外,還能在可能的字符編碼之間相互進行編碼轉換。如果啟用了這個功能,輸入字符編碼可能將自動轉換成。這些可能在未來增加。 前言 PHP7即將在12月3日正式發布,而RC8是已經差不多穩定了的版本,后續的GA版本主要都是在修復bug,所以為了未來開發環境的升級,準備嘗試安裝一下。 PHP7.0.0將在12月3日正式發布,但是12月2日時github已經發布出PHP-7...

    lordharrd 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<