統(tǒng)一的數(shù)據(jù)訪問(wèn)接口PDO
創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供宣漢網(wǎng)站建設(shè)、宣漢做網(wǎng)站、宣漢網(wǎng)站設(shè)計(jì)、宣漢網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、宣漢企業(yè)網(wǎng)站模板建站服務(wù),10多年宣漢做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
PDO(PHP Data Objects) 擴(kuò)展為 PHP 訪問(wèn)數(shù)據(jù)庫(kù)定義了一個(gè)輕量級(jí)的、一致性的接口,它提供了一個(gè)數(shù)據(jù)訪問(wèn)抽象層,這樣,無(wú)論使用什么數(shù)據(jù)庫(kù),用戶(hù)都可以通過(guò)統(tǒng)一的函數(shù)執(zhí)行來(lái)查詢(xún)和獲取數(shù)據(jù)。注意,你并不能使用 PDO 擴(kuò)展本身執(zhí)行任何數(shù)據(jù)庫(kù)操作,必須使用一個(gè) database-specific PDO driver (針對(duì)特定數(shù)據(jù)庫(kù)的 PDO 驅(qū)動(dòng))訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器。
PHP可以使用函數(shù):file_get_contents函數(shù)獲取外部json數(shù)據(jù)接口的數(shù)據(jù),得到這些數(shù)據(jù)以后php再轉(zhuǎn)成數(shù)組或?qū)ο髠鹘o前臺(tái)html頁(yè)面顯示即可。
file_get_contents或者curl都可以
接收到數(shù)據(jù)后,可以使用php函數(shù)json_decode()把json轉(zhuǎn)換成數(shù)組或?qū)ο蟾袷?/p>
使用PHP寫(xiě)api接口是經(jīng)常做的,PHP寫(xiě)好接口后,前臺(tái)就可以通過(guò)鏈接獲取接口提供的數(shù)據(jù),而返回的數(shù)據(jù)一般分為兩種情況,xml和json,在這個(gè)過(guò)程中,服務(wù)器并不知道,請(qǐng)求的來(lái)源是什么,有可能是別人非法調(diào)用我們的接口,獲取數(shù)據(jù),因此就要使用安全驗(yàn)證
原理
從圖中可以看得很清楚,前臺(tái)想要調(diào)用接口,需要使用幾個(gè)參數(shù)生成簽名。
時(shí)間戳:當(dāng)前時(shí)間
隨機(jī)數(shù):隨機(jī)生成的隨機(jī)數(shù)
口令:前后臺(tái)開(kāi)發(fā)時(shí),一個(gè)雙方都知道的標(biāo)識(shí),相當(dāng)于暗號(hào)
算法規(guī)則:商定好的運(yùn)算規(guī)則,上面三個(gè)參數(shù)可以利用算法規(guī)則生成一個(gè)簽名。前臺(tái)生成一個(gè)簽名,當(dāng)需要訪問(wèn)接口的時(shí)候,把時(shí)間戳,隨機(jī)數(shù),簽名通過(guò)URL傳遞到后臺(tái)。后臺(tái)拿到時(shí)間戳,隨機(jī)數(shù)后,通過(guò)一樣的算法規(guī)則計(jì)算出簽名,然后和傳遞過(guò)來(lái)的簽名進(jìn)行對(duì)比,一樣的話,返回?cái)?shù)據(jù)。
算法規(guī)則
在前后臺(tái)交互中,算法規(guī)則是非常重要的,前后臺(tái)都要通過(guò)算法規(guī)則計(jì)算出簽名,至于規(guī)則怎么制定,看你怎么高興怎么來(lái)。
我這個(gè)算法規(guī)則是
時(shí)間戳,隨機(jī)數(shù),口令按照首字母大小寫(xiě)順序排序
然后拼接成字符串
進(jìn)行sha1加密
再進(jìn)行MD5加密
轉(zhuǎn)換成大寫(xiě)。
可以用curl獲取借樓的信息。
所謂接口,就是提供一個(gè)url,只要你滿足它要求的參數(shù),就能得到你要的數(shù)據(jù)。比如你拿到一個(gè)接口,帶上所需的參數(shù),復(fù)制到地址欄同樣能得到。不過(guò)最好用程序得到。file_get_contents也可以用,不過(guò)有局限性。所以我建議用curl。給你一個(gè)函數(shù),挺好用的。
function request($url,$https=true,$method='GET',$data=null){
$ch = curl_init();//初始化,得到資源
curl_setopt($ch, CURLOPT_URL,$url); //請(qǐng)求數(shù)據(jù)的路徑
curl_setopt($ch, CURLOPT_HEADER,false);//是否輸出頭
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接輸出結(jié)果
//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之后的版本
if($https){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否驗(yàn)證主機(jī)
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否進(jìn)行證書(shū)驗(yàn)證
}
if($method=='POST'){
curl_setopt($ch, CURLOPT_POST, true); //POST傳輸
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //傳輸數(shù)據(jù)
}
$content_json = curl_exec($ch);
if ($content_json === false) {
return "網(wǎng)絡(luò)請(qǐng)求出錯(cuò): " . curl_error($ch);
}
curl_close($ch);
return $content_json;
}
函數(shù)是不可以調(diào)用的
你把這個(gè)xml當(dāng)成字符串,然后在用php xml處理一下就可以使用了