PHP接收JSON格式的數據
成都創新互聯公司專業為企業提供歷城網站建設、歷城做網站、歷城網站設計、歷城網站制作等企業網站建設、網頁設計與制作、歷城企業網站模板建站服務,10多年歷城做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
在API服務中,目前流行采用json形式來交互。
給前端調用的接口輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微復雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數據
查看手冊,可以發現$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變量組成的數組,是自動全局變量。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。此變量僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對于 enctype="multipart/form-data" 表單數據不可用。也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
補充說明:PHP默認識別的數據類型是application/x-標準的數據類型。
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type:
application/x-www-form-urlencoded提交的數據
解釋:也就是表單POST過來的數據
方法2、file_get_contents("php://input");
說明:
允許讀取
POST
的
原始數據
。
和
$HTTP_RAW_POST_DATA
比起來,它給內存帶來的壓力較小,并且不需要任何特殊的
php.ini
設置。
php://input
不能用于
enctype="multipart/form-data"。
解釋:
對于未指定
Content-Type
的POST數據,則可以使用file_get_contents(“php://input”);來獲取原始數據。
事實上,用PHP接收POST的任何數據都可以使用本方法。而不用考慮Content-Type,包括
二進制文件
流也可以。
所以用方法二是最保險的方法
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
說明:
總是產生
$HTTP_RAW_POST_DATA
變量包含有原始的
POST
數據。
此變量僅在碰到未識別
MIME
類型的數據時產生。
$HTTP_RAW_POST_DATA
對于
enctype="multipart/form-data"
表單數據不可用
如果post過來的數據不是PHP能夠識別的,可以用
$GLOBALS['HTTP_RAW_POST_DATA']來接收,
比如
text/xml
或者
soap
等等
解釋:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始數據。
$_POST或
$_REQUEST
存放的是
PHP以key=value的形式格式化以后的數據。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST過來的數據取決于centent-Type的設置,即POST數據時
必須顯式示指明Content-Type:
application/x-www-form-urlencoded,POST的數據才會存放到
$GLOBALS['HTTP_RAW_POST_DATA']中
describe?tablename;????????????//獲取表結構信息
describe?tablename?fieldname;??//獲取表的某個字段結構信息
比如:describe?users?username;?//獲取users表的username字段的結構信息
返回:array(
'Field'????='username',
'Type'?????='varchar(50)',
'Null'?????='NO',
'Key'??????='UNI',
'Default'??='',
'Extra'????=''
)
php 獲取數據是不需要寫類型的,你可以看下邊的例子:
$name="張三"; //這種就是字符串
$age=2; //這種就是數字
$other=array("123",22); //數組
像這些,你定義的什么類型,php就可以接受什么類型。不需要特意轉
標題名稱:php怎么獲取數據類型 php常見的數據類型
文章URL:http://m.kartarina.com/article40/dodshho.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、、企業建站、微信公眾號、靜態網站、云服務器
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯