本文目錄一覽:
php 怎麼訪問接口
統一的數據訪問接口PDO
PDO(PHP Data Objects) 擴展為 PHP 訪問數據庫定義了一個輕量級的、一致性的接口,它提供了一個數據訪問抽象層,這樣,無論使用什麼數據庫,用戶都可以通過統一的函數執行來查詢和獲取數據。注意,你並不能使用 PDO 擴展本身執行任何數據庫操作,必須使用一個 database-specific PDO driver (針對特定數據庫的 PDO 驅動)訪問數據庫服務器。
如何利用Thinkphp框架開發移動端接口詳解
方案一:給原生APP提供api接口
使用TP框架時 放在common文件夾下文件名就叫function.php
?php
/**
* Created by zhangkx
* Email: zkx520tnhb@163.com
* Date: 2015/8/1
* Time: 23:15
*/
/****** api開發輔助函數 *******/
/**
* @param null $msg 返回正確的提示信息
* @param flag success CURD 操作成功
* @param array $data 具體返回信息
* Function descript: 返回帶參數,標誌信息,提示信息的json 數組
*
*/
function returnApiSuccess($msg = null,$data = array()){
$result = array(
‘flag’ = ‘Success’,
‘msg’ = $msg,
‘data’ =$data
);
print json_encode($result);
}
/**
* @param null $msg 返回具體錯誤的提示信息
* @param flag success CURD 操作失敗
* Function descript:返回標誌信息 ‘Error’,和提示信息的json 數組
*/
function returnApiError($msg = null){
$result = array(
‘flag’ = ‘Error’,
‘msg’ = $msg,
);
print json_encode($result);
}
/**
* @param null $msg 返回具體錯誤的提示信息
* @param flag success CURD 操作失敗
* Function descript:返回標誌信息 ‘Error’,和提示信息,當前系統繁忙,請稍後重試;
*/
function returnApiErrorExample(){
$result = array(
‘flag’ = ‘Error’,
‘msg’ = ‘當前系統繁忙,請稍後重試!’,
);
print json_encode($result);
}
/**
* @param null $data
* @return array|mixed|null
* Function descript: 過濾post提交的參數;
*
*/
function checkDataPost($data = null){
if(!empty($data)){
$data = explode(‘,’,$data);
foreach($data as $k=$v){
if((!isset($_POST[$k]))||(empty($_POST[$k]))){
if($_POST[$k]!==0 $_POST[$k]!==’0′){
returnApiError($k.’值為空!’);
}
}
}
unset($data);
$data = I(‘post.’);
unset($data[‘_URL_’],$data[‘token’]);
return $data;
}
}
/**
* @param null $data
* @return array|mixed|null
* Function descript: 過濾get提交的參數;
*
*/
function checkDataGet($data = null){
if(!empty($data)){
$data = explode(‘,’,$data);
foreach($data as $k=$v){
if((!isset($_GET[$k]))||(empty($_GET[$k]))){
if($_GET[$k]!==0 $_GET[$k]!==’0′){
returnApiError($k.’值為空!’);
}
}
}
unset($data);
$data = I(‘get.’);
unset($data[‘_URL_’],$data[‘token’]);
return $data;
}
}
查詢單個果品詳細信息
/**
* 發布模塊
*
* 獲取信息單個果品詳細信息
*
*/
public function getMyReleaseInfo(){
//檢查是否通過post方法得到數據
checkdataPost(‘id’);
$where[‘id’] = $_POST[‘id’];
$field[] = ‘id,fruit_name,high_price,low_price,address,size,weight,fruit_pic,remark’;
$releaseInfo = $this-release_obj-findRelease($where,$field);
$releaseInfo[‘remark’] = mb_substr($releaseInfo[‘remark’],0,49,’utf-8′).’…’;
//多張圖地址按逗號截取字符串,截取後如果存在空數組則需要過濾掉
$releaseInfo[‘fruit_pic’] = array_filter(explode(‘,’, $releaseInfo[‘fruit_pic’]));
$fruit_pic = $releaseInfo[‘fruit_pic’];unset($releaseInfo[‘fruit_pic’]);
//為圖片添加存儲路徑
foreach($fruit_pic as $k=$v ){
$releaseInfo[‘fruit_pic’][] = ‘http://’.$_SERVER[‘HTTP_HOST’].’/Uploads/Release/’.$v;
}
if($releaseInfo){
returnApiSuccess(”,$releaseInfo);
}else{
returnApiError( ‘什麼也沒查到(+_+)!’);
}
}
findRelease() 方法的model
/**
* 查詢一條數據
*/
public function findRelease($where,$field){
if($where[‘status’] == ” || empty($where[‘status’])){
$where[‘status’] = array(‘neq’,’9′);
}
$result = $this-where($where)-field($field)-find();
return $result;
}
app端接收到的數據(解碼json之後)
{
“flag”: “success”,
“message”: “”,
“responseList”: {
“id”: “2”,
“fruit_name”: “蘋果”,
“high_price”: “8.0”,
“low_price”: “5.0”,
“address”: “天津小白樓水果市場”,
“size”: “2.0”,
“weight”: “2.0”,
“remark”: “急需…”,
“fruit_pic”: [
“”,
“”
]
}
}
app端接收到的數據(原生json串)
代碼如下:
{“flag”:”success”,”message”:””,”responseList”:{“id”:”2″,”fruit_name”:”\u82f9\u679c”,”high_price”:”8.0″,”low_price”:”5.0″,”address”:”\u5929\u6d25\u5c0f\u767d\u697c\u6c34\u679c\u5e02\u573a”,”size”:”2.0″,”weight”:”2.0″,”remark”:”\u6025\u9700…”,”fruit_pic”:[“http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/55599e7514815.png”,”http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/554f2dc45b526.jpg”]}}
方案二:另外我們還可以通過ThinkPHP實現移動端訪問自動切換主題模板,這樣也可以做到移動端訪問
ThinkPHP的模板主題機制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主題默認是空,表示不啟用模板主題功能)配置項就可以方便的實現多模板主題切換。
但對於移動端與PC端,也許你會設計完全不同的主題風格,且針對不同的來路提供不同的渲染方式,其中一種比較流行的方法是“響應式設計”,但就本人經歷而言,要實現完全的“響應式設計”並不是那麼容易,且解決兼容問題也是個難題,假設是大型站點,比如:淘寶、百度、拍拍這些,響應式設計肯定是滿足不了需求的,而是需要針對手機訪問用戶提供單獨的手機網站。
ThinkPHP 完全能夠實現,而且非常的簡單。與TPM的智能模版切換引擎相同,只要對來路進行判斷處理就行了。
一、將 ismobile() 加入到{項目/Common/common.php}
function ismobile() {
// 如果有HTTP_X_WAP_PROFILE則一定是移動設備
if (isset ($_SERVER[‘HTTP_X_WAP_PROFILE’]))
return true;
//此條摘自TPM智能切換模板引擎,適合TPM開發
if(isset ($_SERVER[‘HTTP_CLIENT’]) ‘PhoneClient’==$_SERVER[‘HTTP_CLIENT’])
return true;
//如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息
if (isset ($_SERVER[‘HTTP_VIA’]))
//找不到為flase,否則為true
return stristr($_SERVER[‘HTTP_VIA’], ‘wap’) ? true : false;
//判斷手機發送的客戶端標誌,兼容性有待提高
if (isset ($_SERVER[‘HTTP_USER_AGENT’])) {
$clientkeywords = array(
‘nokia’,’sony’,’ericsson’,’mot’,’samsung’,’htc’,’sgh’,’lg’,’sharp’,’sie-‘,’philips’,’panasonic’,’alcatel’,’lenovo’,’iphone’,’ipod’,’blackberry’,’meizu’,’android’,’netfront’,’symbian’,’ucweb’,’windowsce’,’palm’,’operamini’,’operamobi’,’openwave’,’nexusone’,’cldc’,’midp’,’wap’,’mobile’
);
//從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字
if (preg_match(“/(” . implode(‘|’, $clientkeywords) . “)/i”, strtolower($_SERVER[‘HTTP_USER_AGENT’]))) {
return true;
}
}
//協議法,因為有可能不準確,放到最後判斷
if (isset ($_SERVER[‘HTTP_ACCEPT’])) {
// 如果只支持wml並且不支持html那一定是移動設備
// 如果支持wml和html但是wml在html之前則是移動設備
if ((strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) !== false) (strpos($_SERVER[‘HTTP_ACCEPT’], ‘text/html’) === false || (strpos($_SERVER[‘HTTP_ACCEPT’], ‘vnd.wap.wml’) strpos($_SERVER[‘HTTP_ACCEPT’], ‘text/html’)))) {
return true;
}
}
return false;
}
二、在{項目/Lib/}創建一個 CommonAction.php,假設你的項目已公共控制器,則無需創建,直接加在裡面就行了。
Class CommonAction extends Action{
Public function _initialize(){
//移動設備瀏覽,則切換模板
if (ismobile()) {
//設置默認默認主題為 Mobile
C(‘DEFAULT_THEME’,’Mobile’);
}
//…………你的更多代碼…….
}
}
php ci框架怎麼對接短信接口
相當簡單 這個接口調用就是封裝一個curl請求的function (sendSMS),代碼示例網站上已經有了,使用時:加載這個function, 然後 調用方法sendSMS;
我把源碼給你貼一遍,這個裡面的賬號密碼是需要你們自己去申請的;
?
$username = ‘test’; //用戶賬號
$password = ‘123456’; //密碼
$mobile = ‘13811299934,18610310066,15210954922’; //號手機碼
$content = ‘您的短信驗證碼是:ABCD’; //內容
//即時發送
$result = sendSMS($username,$password,$mobile,$content);
echo $result;
function sendSMS($username,$password,$mobile,$content)
{
$url = ‘http://域名/api/sms.php’;
$data = array
(
‘username’=$username, //用戶賬號
‘password’=$password, //密碼
‘mobile’=$mobile, //號碼
‘content’=$content, //內容
);
$result= curlSMS($url,$data); //POST方式提交
return $result;
}
function curlSMS($url,$post_fields=array()){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3600); //60秒
curl_setopt($ch, CURLOPT_HEADER,1);
curl_setopt($ch, CURLOPT_REFERER,”);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_fields);
$data = curl_exec($ch);
curl_close($ch);
$res = explode(“\r\n\r\n”,$data);
return $res[2];
}
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301470.html