지난해 10월 제 블로그에서 동일한 프런트 엔드 이름 값을 가진 양식 제출 데이터를 수신하는 PHP 처리 문제를 분석한 적이 있습니다. 당시 언급된 해결 방법은 이름 값을 변경하는 것이었습니다. 배열 유형인 php로 수신한 후 배열이 병합됩니다. 이 방법의 단점은 프런트 엔드 양식과 완전히 호환되지 않으며 사용자가 양식을 변경해야 한다는 것입니다. 시스템 요구 사항은 모든 업그레이드가 사용자에게 완전히 투명해야 한다는 것이므로 이 방법은 아직 완벽하지 않습니다.
거의 1년 동안의 축적 끝에 저는 php가 입력/출력 스트림에 액세스하는 원시적인 방법을 제공한다는 사실을 발견했습니다. php://input:
을 통해 POST 데이터를 얻을 수 있습니다.
따라서 동일한 이름 값을 가진 양식 데이터를 얻기 위해 php를 사용하는 아이디어는 다음과 같습니다. 1. php://input을 통해 원본 POST 데이터를 가져옵니다. 2. 데이터를 처리하고 병합합니다. -처리된 값 할당 시스템 변수 $_POST에 다음과 같은 함수가 정의됩니다.
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를 사용하여 처리 후 각 양식의 데이터를 가져올 수 있습니다.