현재 양식을 디자인 할 때 제출 단추의 이름을 양식의 ID와 동일하게 유지하려고합니다. 그럼, 내 PHP에서, 나는 단지 if(isset($_POST['submitName']))
양식을 제출하고 어떤 양식이 제출되었는지 확인하기 위해 할.제출 된 양식을 확인하는 가장 좋은 방법은 무엇입니까?
첫째,이 방법으로 보안 문제 또는 디자인 결함이 있습니까?
내가 만난 한 가지 문제는 사용자에게보다 빠른 유효성 검사를 제공하기 위해 자바 스크립트로 양식을 오버레이하려는 경우입니다. 예를 들어 분명히 서버 측 유효성 검사를 유지해야하지만 입력을 흐리게하면 오류 메시지가 인라인으로 표시되는 경우 사용자에게 더 편리합니다. 또한 제출 버튼을 클릭하면 전체 양식 유효성 검사를 제공하는 것이 좋습니다.
따라서 사용자가 양식의 제출 단추를 클릭하면 유효성 검사가 통과 될 경우 기본 작업을 중지하고 유효성 검사를 수행 한 다음 전통적인 제출 기능을 다시 시도합니다. 이렇게하려면 form.submit()
메서드를 사용하고 있지만 불행하게도 submitmit 변수를 보내지는 않습니다 (버튼을 클릭하지 않고도 form.submit()을 호출 할 수 있어야 함). 이것은 내 PHP 스크립트가 양식이 제출되었음을 감지하지 못함을 의미합니다.
이 문제를 해결하는 올바른 방법은 무엇입니까? 표준 해결책은 양식의 ID 이름을 가진 유효성 검사를 통과 할 때 양식에 숨겨진 필드를 추가하는 것입니다. 그런 다음 form.submit()이 호출되면 제출 단추 대신 전달됩니다. 그러나이 솔루션은 나에게 매우 비관적 인 것처럼 보입니다. 그렇다면 다음을 수행해야하는지 궁금합니다.
a) 제출 단추를 전달하는 것에 의존하지 않는 양식이 제출되었는지 검색하려면 대체 방법을 사용하십시오. 그렇다면 대체 무엇입니까? 분명히 처음부터 여분의 숨겨진 필드를 갖는 것만으로는 더 좋지 않습니다.
b) 비 Javascript 디자인을 유지할 수있는 대체 Javascript 솔루션을 사용하십시오. 예를 들어, form.submit() 대신에 여분의 데이터를 전달할 수있는 대안이 있습니까?
c) 빨아 들이고 자바 스크립트를 사용하여 숨겨진 필드를 삽입하십시오.
업데이트 : 정답을 받아 들였지만 여기서 실수를 분명히하고 다른 사람들에게 도움이 될 수 있도록했습니다. 나는 Mootools를 사용하고 매우 순진하게 addEvent ('submit'...)를 사용했을 때 즉시 from event.stop()을 호출하여 from이 제출되지 않도록해야한다고 생각했습니다. 사실 이것은 사실이 아니며 유효성 검사가 실패 할 경우에만 event.stop()을 호출 할 수 있습니다. 그렇지 않으면 기본 제출이 평소와 같이 시작되고 form.submit()을 사용하면 완전히 불필요하게됩니다.
저희 팀은 현재이 방법을 사용하고 있습니다. 양식에 제출 버튼이 있어야하므로 양식이 마음에 들지 않습니다. 이것을 구현 한 사람들은 다른 팀으로 옮겼습니다. 나와 다른 팀원이 왜 우리 양식이 제출되지 않았는지 알아내는 것이 힘들었습니다. 그런 다음 검증을 위해 제출 버튼이 필요하다는 것을 깨달았습니다. – b01