php获取post表单数据_PHP获取POST表单数据
php獲取post表單數據,這是再正常不過的場景了,這里有幾點需要注意,網上也都有提到。別人總結的畢竟不是自己的,為了體會這些注意點,我自己在本地搭建一個web application, 然后去驗證。注意點是:
$_POST
file_get_contents("php://input")
$GLOBALS['HTTP_RAW_POST_DATA']
這三者到底有什么卻別?上前端代碼:
Username:
id="user_name" type="text" value="" />
Password:
id="passwd" class="tooltip" alt="Click to open the virtual keyboard" title="Click to open the virtual keyboard"
src="keyboard.png" />
上php代碼:
var_dump($_POST);
var_dump(file_get_contents("php://input"));
var_dump($GLOBALS["HTTP_RAW_POST_DATA"]);
這三種獲取POST表單數據的方式跟前端提交表單的enctype(entity-body coding type)有關系,瀏覽器會在request的Content-type字段給出post表單數據的編碼方式。常見的編碼方式:
1. URLencoded: application/x-www-form-urlencoded
2. Multipart: multipart/form-data
3. JSON: application/json
4. XML: text/xml
5. 純文本: text/plain
在Web開發中,前三種格式非常常見。HTML中
支持urlencoded,multipart,plain text, 通過enctype屬性來進行設置。AJAX中默認的則是JSON編碼格式。我配置了下php.ini中的 always_populate_raw_post_data = On。測試結果如下:content_type = application/x-www-form-urlencoded => $_POST 和 file_get_contents("php://input")都可以獲取表單數據,至于$GLOBALS['HTTP_RAW_POST_DATA']能不能就得看php.ini的配置了。
content_type = multipart/form-data => file_get_contents("php://input") 和 $GLOBALS['HTTP_RAW_POST_DATA']都獲取不到數據,但$_POST可以,這點結論與網上其他文章不一樣
content_type = text/plain => $_POST獲取不到數據,file_get_contents("php://input")和$GLOBALS['HTTP_RAW_POST_DATA']可以獲取到
content_type = application/json => $_POST 和 file_get_contents("php://input")都可以獲取表單數據, $GLOBALS['HTTP_RAW_POST_DATA']不行
這里簡單記錄下POST表單數據的讀取問題,網上針對這個問題的文章很多,這里只是簡單備忘和驗證。
end~
總結
以上是生活随笔為你收集整理的php获取post表单数据_PHP获取POST表单数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 队列和rabbitmq_jav
- 下一篇: 分站实现php,php城市分站是什么原理