《PHP编程:PHP中使用php://input处理相同name值的表单数据》要点:
本文介绍了PHP编程:PHP中使用php://input处理相同name值的表单数据,希望对您有用。如果有疑问,可以联系我们。
在去年10月份,我在博客中分析了php接收前台name值相同的表单提交数据的处理的问题,当时说的方案是为把name值改成数组类型,php接收到之后,再对数组进行合并处理.这样做的缺点就是不完全兼容前台表单,用户必需要对表单作出更改,而系统需求是所有升级对用户完全透明,所以说这种方式还是不够完美.PHP编程
经过差不多一年时间的沉淀,发现php提供原始的拜访输入/输出流的方法,POST的数据可以通过php://input来获取:
PHP编程
所以用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,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来获取处理之后各个表单的数据.PHP编程
《PHP编程:PHP中使用php://input处理相同name值的表单数据》是否对您有启发,欢迎查看更多与《PHP编程:PHP中使用php://input处理相同name值的表单数据》相关教程,学精学透。维易PHP学院为您提供精彩教程。