如何請求php框架的接口,如何請求php框架的接口數據

本文目錄一覽:

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-hk/n/301470.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • agavi開發框架

    Agavi是一個基於MVC模式的Web應用程序開發框架,以REST和面向資源的設計為核心思想。本文章將從Agavi的概念、優點、使用方法和實例等方面進行詳細介紹。 一、概念 Aga…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29

發表回復

登錄後才能評論