>백엔드 개발 >PHP 튜토리얼 >PHP_php에서 이름은 같지만 값이 다른 여러 양식 데이터 인스턴스를 받는 방법 팁

PHP_php에서 이름은 같지만 값이 다른 여러 양식 데이터 인스턴스를 받는 방법 팁

WBOY
WBOY원래의
2016-05-16 20:24:12936검색

최근 문의 메시지 관리 시스템에 문제가 발생했습니다. 메시지 프론트에 동일한 이름 값이 입력된 상자가 여러 개 있었습니다. PHP 플랫폼으로 마이그레이션해야 하며 프론트 데스크의 어떤 양식도 변경할 수 없습니다(이 양식을 사용하는 웹사이트가 너무 많기 때문에 제출 주소까지 전송 호환성을 고려해야 합니다). 양식은 변경할 수 없으며 ASP 페이지 상급자에게 제출해야 합니다. 양식 제출 주소 문제는 의사 정적 또는 기타 방법을 사용하여 직접 해결할 수 있습니다. 이전 시스템은 ASP로 만들어졌기 때문에 ASP가 동일한 이름 값을 가진 폼을 처리할 때 프런트 데스크에서 제출한 값을 쉼표로 직접 연결하지만, PHP는 동일한 이름의 입력을 받을 때 다릅니다. 마지막 값이 이전 값을 덮어씁니다. 그렇다면 프런트엔드를 다시 작성하지 않고 동일한 이름을 가진 모든 입력 값을 어떻게 받아들일 수 있을까요? 그 때 두 가지 아이디어가 떠올랐습니다. 첫 번째는 입력 이름을 배열 형식으로 백엔드에 전달한 후 처리하는 것이었지만 이를 허용하려면 프런트엔드 코드도 변경해야 했기 때문에 빠르게 거부되었습니다.
251540f75c1bf4ae8a83fe8c0b31cf89가 b0410033105ffbe84db8aaf7a06fdd83로 변경되었습니다. 두 번째 생각은 PHP 구성에 ASP와 같은 이름 값을 가진 양식을 PHP에서 처리할 수 있도록 하는 유사한 설정이 있습니까? 오랫동안 정보를 확인했지만 찾을 수 없었습니다.

결국 차선책으로 만족하고 프런트 데스크를 약간 변경하고 이름을 배열로 바꾸는 수밖에 없다는 것을 알았습니다. 다행히 이 방법을 사용하는 웹사이트는 많지 않습니다. 다음 단계는 백그라운드에서 데이터를 처리하는 것인데, 이때 제출된 양식이 문자열인지 배열인지 알 수 없는 상황이 발생합니다. 어떻게 해야 할까요? 해결책은 함수를 작성하는 것입니다:

function input_treat($input){
 if(gettype($input)=="string"){
 return htmlentities(trim($input),ENT_QUOTES);
 }else if(gettype($input)=="array"){
 $nd="";
 foreach($input as $v){
  $nd .=htmlentities(trim($v),ENT_QUOTES)." ";
 }
 return $nd;
 }else{
 return false;
 }
}

input_treat() 함수를 사용하여 GET 또는 POST의 값을 처리합니다. 문자열인 경우 문자열을 처리하고 반환합니다. 그런 다음 입력을 순회하고 배열의 각 요소를 연결합니다. 그런 다음 연결된 전체 문자열을 반환합니다.

이 방법으로 전체 요구 사항이 실현됩니다. 동일한 이름 형식을 사용하는 일부 웹 사이트의 경우 데이터를 변경해야 한다는 것이 단점입니다. 더 나은 방법이 있으면 저에게 연락할 수 있는 메시지를 남겨주세요. .

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.