今天我们来聊聊 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 的时候需要做好安全防范措施,比如对发送的数据进行过滤和加密。