今天我們來聊聊 PHP 中的 Curl。
Curl 最常用的功能是在 PHP 中發送網絡請求。通過 Curl,我們可以訪問遠程服務器上的數據,并將其引入到我們的應用程序中。
一個簡單的用例如下:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); echo $response;
上述代碼發送了一個 GET 請求到 http://www.example.com 并接收了頁面的內容。我們可以將其保存在 $response 變量中,并將其輸出到瀏覽器中。
除了 GET 請求,Curl 還支持 POST 請求。我們可以通過設置 CURLOPT_POST 和 CURLOPT_POSTFIELDS 來發送 POST 請求。以下是一個示例:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com/submit-data"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, "name=John&email=john@example.com"); $response = curl_exec($curl); curl_close($curl); echo $response;
此代碼向 http://www.example.com/submit-data 發送了一個 POST 請求,將 name 和 email 表單字段以字符串形式傳遞。在服務器端,您可以通過 $_POST['name'] 和 $_POST['email'] 來訪問這些字段。
另一個值得注意的 Curl 功能是它可以通過設置 CURLOPT_HEADER 來訪問響應頭。以下是一個示例:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); $response = curl_exec($curl); $headers = []; $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $header_text = substr($response, 0, $header_size); $header_lines = explode("\r\n", $header_text); foreach ($header_lines as $line) { if (strpos($line, ':') !== false) { [$key, $value] = explode(':', trim($line), 2); $headers[trim($key)] = trim($value); } else { $headers[] = $line; } } $body = substr($response, $header_size); curl_close($curl); var_dump($headers); // 輸出響應頭 echo $body; // 輸出響應體
此代碼中,我們首先將 CURLOPT_HEADER 設置為 true,以便 Curl 返回響應頭。然后,我們使用 curl_getinfo() 函數獲取響應頭的大小,將其從響應中剝離出來,并將其轉換為數組格式以更方便地訪問。
您還可以設置 CURLOPT_HTTPHEADER 選項以指定請求頭。以下是一個示例:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, ["Authorization: Bearer $access_token"]); $response = curl_exec($curl); curl_close($curl); echo $response;
在此示例中,我們將 CURLOPT_HTTPHEADER 設置為一個字符串數組,其中包括我們的訪問令牌。這是向 API 發送身份驗證請求的一種常見方法。
最后提醒,為了保障代碼安全,我們在使用 Curl 的時候需要做好安全防范措施,比如對發送的數據進行過濾和加密。