首頁  >  文章  >  後端開發  >  php post 接收不到資料怎麼辦

php post 接收不到資料怎麼辦

藏色散人
藏色散人原創
2021-10-15 10:05:185689瀏覽

php post接收不到資料的解決方法:1、將php.ini裡max_input_vars改為5000;2、透過「$GLOBALS['HTTP_RAW_POST_DATA']」取得資料。

php post 接收不到資料怎麼辦

本文操作環境:windows7系統、PHP7.1版、DELL G3電腦

一:PHP 使用POST 取得不到部分數據問題   

使用PHP開發的一個項目,在測試階段客戶反饋說數據沒有保存成功

而我之前測試是通過的,但按客戶的信息上卻重現了問題

問題是這樣的

客戶透過瀏覽器進行保存,但有些資料已經保存成功,但某些資料卻沒有保存成功

而我透過測試發現$_POST 某些資料竟然沒有,但有些是有的

而file_get_contents("php://input");這種方式也可以取得資料,但因為資料需要處理,加上程式碼需要做不少改動

所以考慮下來還是要解決$_POST的問題

#一開始我也是很納悶,之前遇到的都是$_POST全部無法取得的問題,但只能取得部分資訊還是頭一次遇到

既然$_POST是能提交資料的,那麼要不就是提交前部分資料沒有傳送到後台,要嘛就是後台沒有收到

而透過查看瀏覽器的請求並沒有發現有什麼問題,所有資料都是正常發送的

那麼就是後台沒有取得到了

   

在我一次測試中發現,我把提交的資料手動進行了刪除,然後再提交

後台$_POST就能獲取到全部的資料了,而後又在網上進行了搜索

才發現$_POST提交的資料有大小限制的

   接著將php.ini裡max_input_vars 改為5000完美解決

#二:php中$_POST接收不到前端資料的解決方法

預設情況下前端請求類型為Content-Type:application/x- www-form-urlencoded,使用$_POST即可取到數據,

如果前端請求類型為Content-Type:application/json,僅使用$_POST無法取到資料。 (如vue.js的axios,預設方式為application/json)

此時可以透過$GLOBALS['HTTP_RAW_POST_DATA']取得,再使用json_decode轉為對象,範例如下

$mypost = $GLOBALS['HTTP_RAW_POST_DATA']$postdata = json_decode($mypost);$username = $postdata->username;

如果提示Undefined index: HTTP_RAW_POST_DATA,則將程式碼改為如下即可。

$mypost = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:file_get_contents("php://input");$postdata = json_decode($mypost);$username = $postdata->username;

推薦學習:《PHP影片教學

#

以上是php post 接收不到資料怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn