国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

淺談PHP(基于TP3.2框架)開發APP接口(個人見解)

2020-03-22 18:40:33
字體:
來源:轉載
供稿:網友

本篇文章給大家分享的內容是關于淺談PHP(基于TP3.2框架)開發APP接口(個人見解),有著一定的參考價值,有需要的朋友可以參考一下

PHP很強大,可以搞各種東西,web開發,小程序,商城,自然也包括APP啦。
由于博主也是準備完成一個APP項目,就把心得寫一下,以后也能回味一下,哈哈。
因為我們是寫接口嘛,所以安全第一,不能搞出人命是吧。所以就得和前端協商一種接口加密的方法,每個接口都要噢(這個可以叫token加密,也可以叫sign加密,看個人喜歡怎么叫吧)
下面我說下我是怎么加密的吧,我建議接口都是用post傳遞,所以以下參數都是基于post傳遞的

1.首先對傳遞過來的參數進行key字典排序,除去token值(PHP提供了一個ksort函數,默認是標準ASICC碼排序,這里有個坑,就是IOS的排序有時會和安卓的不一樣,只是個別)
2.拼接排序后的值(PHP提供了一個http_build_query函數)
3.在排序后的字符串后面拼接一個自定義的密鑰(這要跟前端好,統一),然后md5加密
4.轉換成大寫作為token,當做參數。
還是貼一下代碼吧

function makeToken($data){    //$data就是$_POST傳過來的參數    unset($data['token']);    unset($data['auth_key']); //這個下面會說到    ksort($data);    $string = http_build_query($data);    if(empty($data)){        $string = 'key=CT01aVVsCkSxYdxi55ml';    } else {        $string = $string .'&key=CT01aVVsCkSxYdxi55ml';    }    $string = md5($string);    $result = strtoupper($string);    return $result;}
<?phpnamespace Api/Controller;use Think/Controller;/** * 公共控制器 */html' target='_blank'>class CommonController extends Controller {    public function _initialize(){        // // //驗證token        $token = I('token');        $sal = makeToken($_POST);        if($sal!=$token){            $result = ajaxR(404,'認證失敗');            $this->ajaxReturn($result);        }    }}

前端生成的token作為參數一并傳入,然后再跟你生成的token進行比對,如果錯誤的話,那token就驗證失敗,接口就不能訪問了。
有些接口是例外,它可能是不需要參數直接請求數據的,所以只需要對自定義的密鑰進行md5加密就可以了,就是將key=CT01aVVsCkSxYdxi55ml這一串加密,當然了這一串你喜歡怎么弄都可以,主要是和前端協商好。
在參數排序前,就是在http_build_query之前,需要先把前端傳過來的token和auth_key去掉(這個先不說),之后再參與排序,這個也要和前端協商好。

接下來說下auth_key吧,大家都知道session是用來記住web頁面的用戶登錄狀態的,而APP也是需要登錄用戶狀態的。這里我使用的一個自己加密的一串用來記住用戶登錄狀態,叫auth_key的參數。
auth_key的生成規則你可以自己定義,在APP端注冊登錄之后,把這個串存入相應的用戶里面,并且將其返回給前端,前端之后的每個訪問都帶上這個auth_key這個參數,而你就可以通過這個參數來查詢這個用戶的相關信息。
當然,你也可以對這個auth_key進行一個時間的限制,例如給個7天的期限,在項目的每個方法都調用一下,看看是否過期了,過期了就給前端返回一個登陸狀態失效,退出登錄。
其實開發APP的接口不難,主要和前端協商好,就很容易辦。一般我們返回的都是json格式,如下

{    "code": 200,    "message": "獲取信息成功",    "data": {        "lng": "113.743393",        "lat": "23.015902",    }}

定義好返回的狀態碼和信息還有數據,這是必不可少的。

PHP很強大,可以搞各種東西,web開發,小程序,商城,自然也包括APP啦。
由于博主也是準備完成一個APP項目,就把心得寫一下,以后也能回味一下,哈哈。
因為我們是寫接口嘛,所以安全第一,不能搞出人命是吧。所以就得和前端協商一種接口加密的方法,每個接口都要噢(這個可以叫token加密,也可以叫sign加密,看個人喜歡怎么叫吧)
下面我說下我是怎么加密的吧,我建議接口都是用post傳遞,所以以下參數都是基于post傳遞的

1.首先對傳遞過來的參數進行key字典排序,除去token值(PHP提供了一個ksort函數,默認是標準ASICC碼排序,這里有個坑,就是IOS的排序有時會和安卓的不一樣,只是個別)
2.拼接排序后的值(PHP提供了一個http_build_query函數)
3.在排序后的字符串后面拼接一個自定義的密鑰(這要跟前端好,統一),然后md5加密
4.轉換成大寫作為token,當做參數。
還是貼一下代碼吧

function makeToken($data){    //$data就是$_POST傳過來的參數    unset($data['token']);    unset($data['auth_key']); //這個下面會說到    ksort($data);    $string = http_build_query($data);    if(empty($data)){        $string = 'key=CT01aVVsCkSxYdxi55ml';    } else {        $string = $string .'&key=CT01aVVsCkSxYdxi55ml';    }    $string = md5($string);    $result = strtoupper($string);    return $result;}
<?phpnamespace Api/Controller;use Think/Controller;/** * 公共控制器 */class CommonController extends Controller {    public function _initialize(){        // // //驗證token        $token = I('token');        $sal = makeToken($_POST);        if($sal!=$token){            $result = ajaxR(404,'認證失敗');            $this->ajaxReturn($result);        }    }}

前端生成的token作為參數一并傳入,然后再跟你生成的token進行比對,如果錯誤的話,那token就驗證失敗,接口就不能訪問了。
有些接口是例外,它可能是不需要參數直接請求數據的,所以只需要對自定義的密鑰進行md5加密就可以了,就是將key=CT01aVVsCkSxYdxi55ml這一串加密,當然了這一串你喜歡怎么弄都可以,主要是和前端協商好。
在參數排序前,就是在http_build_query之前,需要先把前端傳過來的token和auth_key去掉(這個先不說),之后再參與排序,這個也要和前端協商好。

接下來說下auth_key吧,大家都知道session是用來記住web頁面的用戶登錄狀態的,而APP也是需要登錄用戶狀態的。這里我使用的一個自己加密的一串用來記住用戶登錄狀態,叫auth_key的參數。
auth_key的生成規則你可以自己定義,在APP端注冊登錄之后,把這個串存入相應的用戶里面,并且將其返回給前端,前端之后的每個訪問都帶上這個auth_key這個參數,而你就可以通過這個參數來查詢這個用戶的相關信息。
當然,你也可以對這個auth_key進行一個時間的限制,例如給個7天的期限,在項目的每個方法都調用一下,看看是否過期了,過期了就給前端返回一個登陸狀態失效,退出登錄。
其實開發APP的接口不難,主要和前端協商好,就很容易辦。一般我們返回的都是json格式,如下

{    "code": 200,    "message": "獲取信息成功",    "data": {        "lng": "113.743393",        "lat": "23.015902",    }}

定義好返回的狀態碼和信息還有數據,這是必不可少的。

相關推薦:

淺談PHP的跨域問題

淺談PHP面向對象編程

淺談php字符串反轉實例詳解

以上就是淺談PHP(基于TP3.2框架)開發APP接口(個人見解)的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沅陵县| 柘城县| 桑植县| 福鼎市| 南充市| 太谷县| 格尔木市| 来安县| 海原县| 游戏| 新巴尔虎右旗| 固阳县| 象州县| 连南| 名山县| 大新县| 安义县| 文登市| 临漳县| 县级市| 盐亭县| 太仓市| 中牟县| 皮山县| 资源县| 元朗区| 铁岭市| 崇文区| 安达市| 丹阳市| 安泽县| 阿拉善右旗| 舞钢市| 南汇区| 西城区| 措勤县| 水富县| 深水埗区| 托克托县| 睢宁县| 巴彦县|