加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编程:PHP中使用php://input处理相同name值的表单数据

发布时间:2020-12-13 02:23:30 所属栏目:PHP教程 来源:网络整理
导读:《PHP中使用php://input处理相同name值的表单数据》要点: 本文介绍了PHP中使用php://input处理相同name值的表单数据,希望对您有用。如果有疑问,可以联系我们。 在去年10月份,我在博客中分析了php接收前台name值相同的表单提交数据的处理的问题,当时说的方

《PHP中使用php://input处理相同name值的表单数据》要点:
本文介绍了PHP中使用php://input处理相同name值的表单数据,希望对您有用。如果有疑问,可以联系我们。

在去年10月份,我在博客中分析了php接收前台name值相同的表单提交数据的处理的问题,当时说的方案是为把name值改成数组类型,php接收到之后,再对数组进行合并处理.这样做的缺点就是不完全兼容前台表单,用户必需要对表单作出更改,而系统需求是所有升级对用户完全透明,所以说这种方式还是不够完美.PHP编程

经过差不多一年时间的沉淀,发现php提供原始的拜访输入/输出流的方法,POST的数据可以通过php://input来获取:
PHP编程

代码如下:

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; 下面是定义的一个函数:PHP编程

function GET_SUBMIT(){
 if(empty($_POST)) return $_POST;
 //判断提交类型
 if($_SERVER["HTTP_CONTENT_TYPE"] != 'application/x-www-form-urlencoded'){
 return $_POST;
 }
 //获取POST原始值
 $data= file_get_contents("php://input");
 if(empty($data)) return $_POST;
 //开始处理
 $POST=array();
 $list=explode('&',$data);
 foreach($list as $key=>$value){
 //获取POST的KEY和Value值
 $postname=urldecode(substr($value,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来获取处理之后各个表单的数据.PHP编程

《PHP中使用php://input处理相同name值的表单数据》是否对您有启发,欢迎查看更多与《PHP中使用php://input处理相同name值的表单数据》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读