這段時間在研究php的接口,利用jmeter模擬發送數據給php伺服器,看php如何接收post傳輸過去的數據,遇到了幾個問題,經過一番度娘之後終於有所理解,記錄一下:
這裡記錄兩種常用的post方式
第一種:
#content-type為application/x-www-form-urlencoded,這是post預設的資料格式,在使用jquery的ajax來post資料的時候預設就是這種方式,這種方式傳輸的資料形式為:username =admin&password=123456。 (推薦學習:PHP程式設計從入門到精通)
在伺服器接收的時候就是使用最常用的$_POST方式,取得username則採用$_POST['username']即可正常獲取。
第二種:
這種方式研究了好半天才發現怎麼接收和處理其中的數據,content-type為application/json,在php中是無法直接對application/json的資料格式用$_POST方式接收的。 application/json格式的資料類型為:
{ "username":"admin", "password":"123455" }
對於這種post給伺服器的資料類型,在php中需要透過'php://input'原生接收資料類型(post傳送過去的資料方式),然後再用json_encode解析,之後才能操作,php程式碼為:
$raw_post_data = file_get_contents('php://input'); $arr = json_decode($raw_post_data,true); echo $arr['username'];
至此,才可以取得application/x-www-form-urlencoded格式資料一樣,透過$_POST[ 'username']取得到application/json資料的格式。
以上是php接受post傳值的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!