php curl 快速入門

2021-08-31 12:12:36 字數 2110 閱讀 5290

curl

是乙個利用url 語法規定來傳輸檔案和資料的工具,支援很多協議,如http 、ftp 、telnet 等。更讓人高興的是,php 也支援curl 庫。本文將介紹php 中如何運用它。

基本結構

先來看一下在php 中建立curl 請求的基本步驟:

初始化

設定變數

執行並獲取結果

釋放curl 控制代碼

1. 初始化

$ch = curl_init();

2. 設定選項,包括url

curl_setopt($ch, curlopt_url, 「

curl_setopt($ch, curlopt_returntransfer, 1);

curl_setopt($ch, curlopt_header, 0);

3. 執行並獲取html 文件內容

$output = curl_exec($ch);

4. 釋放curl 控制代碼

curl_close($ch);

第二步(也就是curl_setopt() )最為關鍵,有一長串curl 引數可供設定,它們能指定url 請求的各個細節。要一次性全部看完並理解可能比較困難,所以今天我們只試一下那些常用也更有用的選項。

檢查錯誤

你可以加一段檢查錯誤的語句(雖然這並不是必需的):

// …

$output = curl_exec($ch);

if ($output === false)

// …

注意,比較的時候我們用的是「=== false」 ,而非「== false」 。因為我們得區分空輸出和布林值false ,後者才是真正的錯誤。

用post 方法傳送資料

當發起get 請求時,資料可以通過「 查詢字串」 (query string )傳遞給乙個url 。例如,在google 中搜尋時,搜尋關鍵即為url 的查詢字串的一部分:

這種情況下你可能並不需要curl 來模擬。把這個url 丟給「file_get_contents()」 就能得到相同結果。

不過有一些html 表單是用post 方法提交的。這種表單提交時,資料是通過http 請求體(request body ) 傳送,而不是查詢字串。例如,當使用codeigniter 論壇的表單,無論你輸入什麼關鍵字,總是被post 到如下頁面:

你可以用php 指令碼來模擬這種url 請求。首先,新建乙個可以接受並顯示post 資料的檔案,我們給它命名為post_output.php :

print_r($_post);

接下來,寫一段php 指令碼來執行curl 請求:

// 我們在post 資料哦!

curl_setopt($ch, curlopt_post, 1);

// 把post 的變數加上

curl_setopt($ch, curlopt_postfields, $post_data);

$output = curl_exec($ch);

curl_close($ch);

echo $output;

這段指令碼傳送乙個post 請求給post_output.php ,這個頁面$_post 變數並返回,我們利用curl 捕捉了這個輸出。

小結

今天我們一起學習了curl庫。希望你喜歡。下一次如果要發起url 請求時,請考慮下curl 吧!

Flask入門二 快速入門

from flask import flask 路由裝飾器 defhello world 檢視函式 return hello world 返回乙個字串 if name main 把程式儲存為hello.py 用python直譯器執行 python hello.py running on訪問 會看見 ...

adb shell 入門 ADB快速入門

一 簡介 android debug bridge,我們一般簡稱為adb,主要存放在sdk安裝目錄下的platform tools資料夾中,它是乙個非常強大的命令列工具,通過這個工具用來連線電腦和android裝置 手機 電腦 電視 平板 電視盒子等 二 安裝 提取碼 54zh 2.解壓檔案包到固定...

Linux快速入門

linux快速入門 1 基礎概念 檔案系統 分割槽和掛載 檔案系統是指作業系統中與管理檔案有關的軟體和資料。linux 的檔案系統和windows中的檔案系統有很大的區別,在windows 下,目錄結構屬於分割槽 linux 下,分割槽屬於目錄結構。在linux 中把每乙個分割槽和某乙個目錄對應,以...