php curl使用方法與步驟
本書特別新手的一點(diǎn),是將重要操作的核心思路都為大家提供了。在數(shù)據(jù)庫、圖片、文件上傳我們都把真正的步驟。以及步驟如何組何成為我們的代碼和實(shí)現(xiàn)過程都做過講解。
我們將curl的步驟分為以下7步:
????1.初使化curl資源
????2.參數(shù)設(shè)置請求的協(xié)議地址
????3.參數(shù)設(shè)置是否返回請求結(jié)果
????4.設(shè)置發(fā)送數(shù)據(jù)(無發(fā)送數(shù)據(jù)可不設(shè)置)
????5.其他的參數(shù)信息設(shè)置(按實(shí)際工作需要決定)
????6.執(zhí)行或執(zhí)行得到返回結(jié)果
????7.關(guān)閉curl資源
我們?yōu)榱烁玫淖尨蠹覍W(xué)習(xí)和入門,將第2步至第5步本應(yīng)該歸為一步的插成了4個步驟。
第二步至第五步本質(zhì)上,應(yīng)該統(tǒng)成為curl參數(shù)設(shè)置。
所有curl設(shè)置參數(shù)設(shè)置都是通過curl_setopt都完成
curl_setopt這一步最為重要,一切玄妙均在此。
curl_setopt這一步完成了包括連接、參數(shù)和一切請求的細(xì)節(jié)設(shè)置。要一次性全部看完并理解可能比較困難,所以我們只試一下那些更常用也更有用的選項(xiàng)。
我們?yōu)榱烁玫娜腴T。并且在php中我們用的最多的是http請求。因此,我們將一些不需要大家使用到的全部不作講解。
如果感興趣的朋友可以參考curl_setopt中復(fù)雜的參數(shù)設(shè)置。
地址如下:http://php.net/manual/zh/function.curl-setopt.php
一、初使化curl資源
這只有一句話,就是使用的是curl_init函數(shù)。這個參數(shù)法面要傳入任何參數(shù)。返回curl的操作資源。
因?yàn)?,我們在后面是通過curl_setopt向curl的操作資源變量壓入數(shù)據(jù)的。
例:
$ch = curl_init();
二、參數(shù)設(shè)置請求的協(xié)議地址
curl_setopt函數(shù)的詳細(xì)使用如下:
類型 | 說明 |
---|---|
函數(shù) | curl_setopt |
參數(shù)1 | curl資源變量 |
參數(shù)2 | curl參數(shù)選項(xiàng) |
參數(shù)3 | curl參數(shù)值 |
CURLOPT_URL?這個參數(shù)選項(xiàng)規(guī)定了請求的url地址。
curl_setopt($ch, CURLOPT_URL, "http://ipnx.cn");
三、參數(shù)設(shè)置是否返回請求結(jié)果
我們希望curl請求后返回對應(yīng)的結(jié)果。我們要得到對應(yīng)的結(jié)果,也需要設(shè)置一個參數(shù),這個參數(shù)名為:CURLOPT_RETURNTRANSFER。
若需要返回值即為1。不需請求后返回的結(jié)果可設(shè)置為0。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
四、設(shè)置發(fā)送數(shù)據(jù)
如果是get請求,我們不需要設(shè)置發(fā)送的參數(shù)。在post等請求的時候,我們需要設(shè)置發(fā)送方法為post方法。并設(shè)置發(fā)送的數(shù)據(jù)。
*CURLOPT_POST *值設(shè)為1是使用POST方法,0為不使用POST方法
CURLOPT_POSTFIELDS設(shè)置傳遞的數(shù)據(jù)
//聲明使用POST方式來進(jìn)行發(fā)送 curl_setopt($ch, CURLOPT_POST, 1); //發(fā)送什么數(shù)據(jù)呢 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
五、其他的參數(shù)信息設(shè)置
如果是https有的時候我們需要忽略https的安全證書。
CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST 兩個參數(shù)改為false即忽略了證書。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
CURLOPT_HEADER這個參數(shù)又決定是是否處理http的頭信息,我們不想接收處理的話可將這個值設(shè)置為0。
curl_setopt($ch, CURLOPT_HEADER, 0);
此外,我們還可以設(shè)置請求的超時時間,參數(shù)為:CURLOPT_TIMEOUT。
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
其他參數(shù)非常多,我們在之前講過,如果你想了解更多的內(nèi)容可以訪問:
地址如下:http://php.net/manual/zh/function.curl-setopt.php
六、執(zhí)行或執(zhí)行得到返回結(jié)果
我們第三步中,將CURLOPT_RETURNTRANSFER 參數(shù)中將值設(shè)為1。如果執(zhí)行的結(jié)果有數(shù)據(jù)。使用curl_exec執(zhí)行后,會將結(jié)果返回給$output變量。
$output = curl_exec($ch);
七、關(guān)閉curl資源
關(guān)閉curl資源。因?yàn)橘Y源類型,我們反復(fù)強(qiáng)調(diào)過,有打開就有關(guān)閉。
如果不需要使用,使用curl_close關(guān)閉后立刻釋放內(nèi)存。
curl_close($ch);
八丶將上面的組合在一起
<?php //初始化 $ch = curl_init(); //設(shè)置選項(xiàng),包括URL curl_setopt($ch, CURLOPT_URL, "http://ipnx.cn"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); //執(zhí)行并獲取HTML文檔內(nèi)容 $output = curl_exec($ch); //釋放curl句柄 curl_close($ch); //打印獲得的數(shù)據(jù) print_r($output); ?>