国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP中使用php://input處理相同name值的表單數據

2024-05-04 23:30:55
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP中使用php://input處理相同name值的表單數據,本文是另一種處理相同name值表單數據的方法,文中同時給出另一種方法,需要的朋友可以參考下

在去年10月份,我在博客中分析了php接收前臺name值相同的表單提交數據的處理的問題,當時說的方案是為把name值改成數組類型,php接收到之后,再對數組進行合并處理。這樣做的缺點就是不完全兼容前臺表單,用戶必須要對表單作出更改,而系統需求是所有升級對用戶完全透明,所以說這種方式還是不夠完美。

經過差不多一年時間的沉淀,發現php提供原始的訪問輸入/輸出流的方法,POST的數據可以通過php://input來獲取:

復制代碼代碼如下:

php://input 是個可以訪問請求的原始數據的只讀流。 POST 請求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA,因為它不依賴于特定的 php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認沒有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內存。 enctype=”multipart/form-data” 的時候 php://input 是無效的。

php://input 打開的數據流只能讀取一次; 數據流不支持 seek 操作。 不過,依賴于 SAPI 的實現,請求體數據被保存的時候, 它可以打開另一個 php://input 數據流并重新讀取。 通常情況下,這種情況只是針對 POST 請求,而不是其他請求方式,比如 PUT 或者 PROPFIND。

所以用php獲取相同name值的表單數據的思路可以是這樣,1,通過php://input獲取原始的POST數據; 2,對數據進行處理合并; 3, 重新把處理過的值賦給系統變量$_POST; 下面是定義的一個函數:

 

 
  1. function GET_SUBMIT(){ 
  2. if(emptyempty($_POST)) return $_POST
  3. //判斷提交類型 
  4. if($_SERVER["HTTP_CONTENT_TYPE"] != 'application/x-www-form-urlencoded'){ 
  5. return $_POST
  6. //獲取POST原始值 
  7. $datafile_get_contents("php://input"); 
  8. if(emptyempty($data)) return $_POST
  9. //開始處理 
  10. $POST=array(); 
  11. $list=explode('&',$data); 
  12. foreach($list as $key=>$value){ 
  13. //獲取POST的KEY和Value值 
  14. $postname=urldecode(substr($value,0, stripos($value,"="))); 
  15. $postvalue=urldecode(substr($value,(stripos($value,"=")+1))); 
  16. //對KEY值和Value值進行處理 
  17. //去空格和[] 
  18. $postname=trim($postname,' ,[,]'); 
  19. $postvalue=trim($postvalue); 
  20. if(array_key_exists($postname,$POST)){ 
  21. $POST[$postname]=$POST[$postname]." ,".$postvalue
  22. }else
  23. $POST[$postname]=$postvalue
  24. return $POST

接下來只要在需要的地方使用”$_POST=GET_SUBMIT()”, 后面就可以通過$_POST來獲取處理之后各個表單的數據。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苗栗市| 连江县| 洛阳市| 霸州市| 莱芜市| 岳池县| 乌鲁木齐市| 灵山县| 乌恰县| 寻乌县| 宁明县| 蒲城县| 阿鲁科尔沁旗| 丹棱县| 雅安市| 红河县| 彩票| 灵武市| 福安市| 宝山区| 呼伦贝尔市| 宣汉县| 兴隆县| 萨迦县| 天长市| 天津市| 博白县| 灵台县| 临海市| 沧州市| 咸丰县| 赤峰市| 七台河市| 衡阳市| 玉龙| 青川县| 沈阳市| 无棣县| 海口市| 米脂县| 青龙|