PHP CURL的作用對于很多應(yīng)用來說有很大的用處,下面我來詳細(xì)介紹php curl用法詳解,有需要了解的朋友可進(jìn)入?yún)⒖肌?/p>
PHP中的CURL函數(shù)庫(Client URL Library Function)
curl_close — 關(guān)閉一個curl會話
curl_copy_handle — 拷貝一個curl連接資源的所有內(nèi)容和參數(shù)
curl_errno — 返回一個包含當(dāng)前會話錯誤信息的數(shù)字編號
curl_error — 返回一個包含當(dāng)前會話錯誤信息的字符串
curl_exec — 執(zhí)行一個curl會話
curl_getinfo — 獲取一個curl連接資源句柄的信息
curl_init — 初始化一個curl會話
curl_multi_add_handle — 向curl批處理會話中添加單獨(dú)的curl句柄資源
curl_multi_close — 關(guān)閉一個批處理句柄資源
curl_multi_exec — 解析一個curl批處理句柄
curl_multi_getcontent — 返回獲取的輸出的文本流
curl_multi_info_read — 獲取當(dāng)前解析的curl的相關(guān)傳輸信息
curl_multi_init — 初始化一個curl批處理句柄資源
curl_multi_remove_handle — 移除curl批處理句柄資源中的某個句柄資源
curl_setopt_array — 以數(shù)組的形式為一個curl設(shè)置會話參數(shù)
curl_setopt — 為一個curl設(shè)置會話參數(shù)
curl_version — 獲取curl相關(guān)的版本信息
curl_init()函數(shù)的作用初始化一個curl會話,curl_init()函數(shù)唯一的一個參數(shù)是可選的,表示一個url地址。
curl_exec()函數(shù)的作用是執(zhí)行一個curl會話,唯一的參數(shù)是curl_init()函數(shù)返回的句柄。
curl_close()函數(shù)的作用是關(guān)閉一個curl會話,唯一的參數(shù)是curl_init()函數(shù)返回的句柄。
1. php curl的默認(rèn)調(diào)用方法,get方式訪問url,代碼如下:
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //設(shè)置http頭
- curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); //設(shè)置為客戶端支持gzip壓縮
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //設(shè)置連接等待時間
- curl_setopt($ch, CURLOPT_URL, $url );
- curl_exec( $ch );
- if ($error = curl_error($ch) ) {
- //出錯處理
- return -1;
- }
- fclose($fp);
- $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //獲取http返回值
- if( $curl_code == 200 ) {
- //正常訪問url
- }
- //異常
2. 設(shè)置http header支持curl訪問lighttpd服務(wù)器,Java代碼如下:
$header[]= 'Expect:';$header[]= 'Expect:';
3. 設(shè)置curl,只獲取http header,不獲取body,Java代碼如下:
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_NOBODY, 1);
- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_NOBODY, 1);
或者只獲取body,Java代碼如下:
- curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
- curl_setopt($ch, CURLOPT_NOBODY, 0);
- curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body
- curl_setopt($ch, CURLOPT_NOBODY, 0);
4.訪問虛擬主機(jī),需設(shè)置Host,代碼如下
$header[]= 'Host: '.$host;
5. 使用post, put,delete等REStful方式訪問url,代碼如下:
curl_setopt($ch, CURLOPT_POST,1); put, delete: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); //或者PUT,需要服務(wù)器支持這些方法。
6.保存下載內(nèi)容為文件,代碼如下:
curl_setopt($ch, CURLOPT_FILE, $fp);
模擬POST請求,代碼如下:
- <?PHP
- $url = 'POST_URL';
- $fields=array(
- 'a' => 'a',
- 'b' => 'b',
- );
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, count($fields));
- curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
- ob_start();
- curl_exec($ch);
- $result = ob_get_contents();
- ob_end_clean();
- echo $result;
- curl_close($ch);
- ?>
模仿get登錄,代碼如下:
- <?
- session_start();
- $url = 'http://localhost/test/loginAct.php';
- $post = 1;
- $returntransfer = 1;
- $port = 80;
- $header = 0;
- $nobody = 0;
- $followlocation = 1;
- $cookie_jar = $_SESSION['cookie_jar'];
- $request = 'userName=huyan&pwd='.sha1(yanyan).'&ac=login';
- $ch = curl_init();
- $options = array(CURLOPT_URL => $url,
- CURLOPT_HEADER => $header,
- CURLOPT_NOBODY => $nobody,
- CURLOPT_PORT => $port,
- CURLOPT_POST => $post,
- CURLOPT_POSTFIELDS => $request,
- CURLOPT_RETURNTRANSFER => $returntransfer,
- CURLOPT_FOLLOWLOCATION => $followlocation,
- CURLOPT_COOKIEJAR => $cookie_jar,
- CURLOPT_COOKIEFILE => $cookie_jar,
- CURLOPT_REFERER => $url
- );
- curl_setopt_array($ch, $options);
- $temp = curl_exec($ch);
- curl_errno($ch);
- curl_close($ch);
- echo $temp;
- ?>
注意,如果你的curl不可以使用我們可以參考下面方法來打開
啟php curl函數(shù)庫的步驟
1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; 用 echo phpinfo();查看php.ini的路徑
2).把php5/libeay32.dll,ssleay32.dll復(fù)制到系統(tǒng)目錄windows/下
3).重啟apache
配置php支持curl
curl是一個利用URL語法在命令行方式下工作的文件傳輸工具。它支持很多協(xié)議:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。curl同樣支持HTTPS認(rèn)證,HTTP POST方法, HTTP PUT方法, FTP上傳, kerberos認(rèn)證, HTTP上傳, 代理服務(wù)器, cookies, 用戶名/密碼認(rèn)證, 下載文件斷點(diǎn)續(xù)傳, 上載文件斷點(diǎn)續(xù)傳, http代理服務(wù)器管道( proxy tunneling), 甚至它還支持IPv6, socks5代理服務(wù)器, 通過http代理服務(wù)器上傳文件到FTP服務(wù)器等等,功能十分強(qiáng)大。Windows操作系統(tǒng)下的網(wǎng)絡(luò)螞蟻,網(wǎng)際快車(FlashGet)的功能它都可以做到。準(zhǔn)確的說,curl支持文件的上傳和下載,所以是一個綜合傳輸工具,但是按照傳統(tǒng),用戶習(xí)慣稱curl為下載工具。
配置方法:
1、拷貝PHP目錄中的libeay32.dll 和 ssleay32.dll 兩個文件到 system32 目錄。
2、修改php.ini:配置好 extension_dir ,去掉 extension = php_curl.dll 前面的分號。
php下擴(kuò)展php_curl.dll的安裝
已經(jīng)內(nèi)置有php_curl.dll,在ext目錄下,此DLL用于支持SSL和zlib,在php.ini中找到有extension=php_curl.dll,去掉前面的注釋.
設(shè)置extension_dir=c:phpext, 刷新PHP頁面時報錯, 說找不到模塊php_curl.dll,拷貝php_curl.dll 到windowssystem32,還是同樣的錯.
在網(wǎng)上找了一下,需要將:libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll都拷貝到system32目錄下,重啟IIS即可.
新聞熱點(diǎn)
疑難解答