최근 문의 메시지 관리 시스템에 문제가 발생했습니다. 메시지 프론트에 동일한 이름 값이 입력된 상자가 여러 개 있었습니다. 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의 값을 처리합니다. 문자열인 경우 문자열을 처리하고 반환합니다. 그런 다음 입력을 순회하고 배열의 각 요소를 연결합니다. 그런 다음 연결된 전체 문자열을 반환합니다.
이 방법으로 전체 요구 사항이 실현됩니다. 동일한 이름 형식을 사용하는 일부 웹 사이트의 경우 데이터를 변경해야 한다는 것이 단점입니다. 더 나은 방법이 있으면 저에게 연락할 수 있는 메시지를 남겨주세요. .