這篇文章要跟大家介紹的內容是PHP 中的cURL 函式庫,現在分享給大家,有需要的朋友可以參考一下
file_get_contents() 函數:
<?php $content = file_get_contents("https://segmentfault.com"); var_dump($content);
file_get_contents() 函數使用起來很方便,但不夠靈活,也沒辦法進行錯誤處理。在一些複雜的請求中,不能夠設定請求頭、Cookie、代理、認證等相關信息,更不能向某個伺服器提交表單數據,上傳文件。
// 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_setopt() 函數設定請求選項,具體的每個選項說明請見http://php.net/manual/zh/ func...
錯誤處理透過curl_error() 函數可以查看cURL 會話錯誤詳情,而
curl_getinfo() 函數可以查看回應資訊.因此,透過這兩個函數我們可以實作一個簡單的錯誤處理程序,例如我們現在存取一個不存在的URL 位址:
<?php // 1. 初始化 cURL 会话 $ch = curl_init(); // 2. 设置请求选项 curl_setopt($ch, CURLOPT_URL, "https://segmentfault.com/test.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); # 获取的信息以字符串返回,而不是直接输出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); # 禁止 cURL 验证对等证书,从而支持 HTTPS 访问 // 3. 执行 cURL 会话 $response = curl_exec($ch); if ($response === FALSE) { echo "cURL connert error: " . curl_error($ch); exit; } $info = curl_getinfo($ch); if ($info['http_code'] == 404) { echo 'HTTP 404'; exit; } var_dump($response); // 4. 关闭 cURL 会话 curl_close($ch);
<?php function curl_post($url, $data) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $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);
<?php function curl_upload($url, $data) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $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);
file_put_contents() 函數實作檔案下載:
<?php function curl_download($url, $path) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $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');
CURLOPT_USERPWD 參數即可:
<?php function curl_auth($url, $user, $passwd) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $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');
<?php // 模拟登录获取 Cookie function curl_login($url, $data, $cookie) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $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); }
<?php require __DIR__ . '/vendor/autoload.php'; use \Curl\Curl; $curl = new Curl(); $curl->get('https://www.example.com/'); if ($curl->error) { echo 'Error: ' . $curl->errorCode . ': ' . $curl->errorMessage . "\n"; } else { echo 'Response:' . "\n"; var_dump($curl->response); }
#相關推薦:
以上是PHP 中的 cURL 函式庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!