這次帶給大家PHP伺服器端的API以及介面開發詳解,PHP伺服器端的API以及介面開發的注意事項有哪些,以下就是實戰案例,一起來看一下。
相信大家都做過PHP請求API介面取得數據,例如淘寶API,微信公眾平台,天氣查詢,快遞查詢等,有的需要參照接口文檔根據簽名算法構造sign(簽名),或者設置token,然後透過curl發送POST請求帶上參數,獲得回傳數據,一般是json或xml格式。
但是現在的情況反過來了,我們要開發PHP伺服器端的API接口,也就是別人請求我們,我們驗證請求合法性,並查詢資料返回。
這種情況其實在手機app開發中用到,手機APP應用往往需要請求PHP接口獲取數據,不過這個請求一般是不用經過驗證的,根據不同的功能請求不同的url,通常也是get方式傳參數直接取得資料。
本文簡單講講伺服器端驗證請求合法性的方法,和接收參數的方式。
簡單的get請求如:http://www.demo.com/api/get_cat?id=2,請求這個網址會傳回一些數據,無論是誰用什麼程式語言請求都能得到資料。
那麼在需要驗證合法性的情況下這樣顯然是不行的。所以需要一個秘鑰,這個時候往往用POST方式請求url。
例如傳遞的參數中有個簽名sign,值是98888,當然生成sign的方式很多而且不可能這麼簡單,這裡只是隨便寫,那麼伺服器端接收到sign是98888,假如我們約定98888就是合法的,這時候判斷sign是否為98888就可以驗證這是合法請求了。
但這樣也太簡單了,一下子就被破解了,設定這個sign就毫無意義了。所以要有一個產生sign的規則,請求的時候依照這個規則產生sign傳參,伺服器端接收的時候也會依照這個規則產生sign,如果產生的sign一致,表示這是合法請求。每次請求都會帶著sign進行驗證。
還有一種驗證叫token,第一次要求的時候驗證token,在一定時間內不用再驗證。這要分兩步,第一步先請求取得token的介面得到token,第二步才是請求具體介面的功能,需要帶上token傳參。由於第一次要求token的時候,伺服器端先把token儲存起來了再回傳的,所以後面的請求判斷傳過來的token是否存在就可以驗證了。
許多介面開發都同時使用兩者方式確保私密和安全。
還有一點,發送POST請求往往使用PHP的CURL模組,例如對方透過curl發送POST請求,curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string),這裡$post_string是傳PHP數組的形式好,還是json格式呢?
如果是傳PHP數組,我這邊直接$_POST['xx']取得參數,如果是傳的json格式,我這邊好像要用file_get_contents('php: //input', 'r')取得傳過來的json數據,然後解析json得到參數。
什麼情況下用第二種?
這個曾經在網路上提問過,看看大家怎麼回答:
對PHP來說JSON和數組有時候真的只是一行程式碼的差別,如果我寫可能直接回用第一種。
我覺得你想你的程式碼簡潔一點可以用第二種,我記得weixin的php sdk好像類似就是第二種(當然那是xml格式)
還有如果對方使用物件導向直接序列化出來的json的話,用json會讓他的程式碼更簡潔一點。
第一種做法,是傳輸的是form表單POST協議,PHP會把PHP數組變成HTTP表單的格式,跨語言通用,但是這種並不是主流的API協議,而更像是模擬提交表單。
絕大多數API協定會用JSON POST,第二種做法,即在HTTP Body裡放置JSON資料。也是跨語言的,但作為API更友善。
第一種方法,直接PHP curl,如果資料內容沒處理好,數組value裡傳了 @/xxx/xxx 這樣的內容,curl會把伺服器上的本地檔案傳出去,注意防範。
x-www-form-urlencoded是RFC標準,沒什麼不相容的,豈止跨語言,還跨越時空。 JSON這種是近幾年想出來的,不是標準,用方便而已。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
ThinkPHP實作微信支付(jsapi支付)流程教學詳解_php實例
以上是PHP伺服器端的API以及介面開發詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver CS6
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器