PHP中使用php://input处理相同name值的表单数据
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-09 17:09:38 浏览: 评论:0
这篇文章主要介绍了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; 下面是定义的一个函数:
- function GET_SUBMIT(){
- if(emptyempty($_POST)) return $_POST;
- //判断提交类型
- if($_SERVER["HTTP_CONTENT_TYPE"] != 'application/x-www-form-urlencoded'){
- return $_POST;
- }
- //获取POST原始值
- $data= file_get_contents("php://input");
- if(emptyempty($data)) return $_POST;
- //开始处理
- $POST=array();
- $list=explode('&',$data);
- foreach($list as $key=>$value){
- //获取POST的KEY和Value值
- $postname=urldecode(substr($value,0, stripos($value,"=")));
- $postvalue=urldecode(substr($value,(stripos($value,"=")+1)));
- //对KEY值和Value值进行处理
- //去空格和[]
- $postname=trim($postname,' ,[,]');
- $postvalue=trim($postvalue);
- if(array_key_exists($postname,$POST)){
- $POST[$postname]=$POST[$postname]." ,".$postvalue;
- }else{
- $POST[$postname]=$postvalue;
- }
- }
- return $POST;
- }
接下来只要在需要的地方使用”$_POST=GET_SUBMIT()”, 后面就可以通过$_POST来获取处理之后各个表单的数据。
Tags: PHP处理name php: input
相关文章
- ·php中php://input的用法详细(2014-07-29)
- ·php中$_POST,$HTTP_RAW_POST_DATA 和 php://input 的区别(2016-08-25)
- ·php输入流php://input使用示例(php发送图片流到服务器)(2020-08-17)
- ·php输入流php://input使用浅析(2021-04-10)
- ·php中$_POST与php://input的区别实例分析(2021-05-05)
- ·PHP 是什么?(2013-11-12)
- ·Php.ini文件位置在哪里 Php.ini文件找不到(2013-11-12)
- ·点击浏览器的后退按钮后,所有字段的信息都被清空了?(2013-11-12)
- ·PHP 数据类型(2013-11-12)
- ·php 获取当前脚本的url(2013-11-12)
- ·php技术生成静态页面的实现(2013-11-13)
- ·缺陷月项目启动 披露PHP脚本语言漏洞(2013-11-13)
- ·在PHP中全面阻止SQL注入式攻击(2013-11-13)
- ·php生成随机密码的几种方法(2013-11-13)
- ·PHP中使用FCKeditor2.3.2配置(2013-11-13)
- ·如何使用PHP开发高效的WEB系统(2013-11-13)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)