Qual é a melhor maneira de identificar qual formulário foi submetido?

Atualmente, quando eu projeto meus formulários, eu gosto de manter o nome do botão enviar igual ao id do formulário. Então, no meu php, eu simplesmente faço if(isset($_POST['submitName'])) para verificar se um formulário foi enviado e qual formulário foi enviado.

Em primeiro lugar, existem problemas de segurança ou falhas de design com esse método?

Um problema que encontrei é quando eu desejo sobrepor meus formulários com javascript para fornecer uma validação mais rápida ao usuário. Por exemplo, enquanto eu obviamente preciso manter a validação do lado do servidor, é mais conveniente para o usuário se uma mensagem de erro for exibida em linha, ao desfocar uma input. Além disso, seria bom fornecer uma validação completa do formulário, clicando no botão enviar.

Portanto, quando o usuário clicar no botão de envio do formulário, estou interrompendo a ação padrão, fazendo minha validação e tentando renater a funcionalidade de envio tradicional, se a validação for passada. Para fazer isso, estou usando o método form.submit() , mas, infelizmente, isso não envia a variável do botão enviar (como deveria ser como form.submit () pode ser chamado sem nenhum botão clicado). Isso significa que meu script PHP não consegue detectar se o formulário foi enviado.

Qual é a maneira correta de trabalhar em torno disso? Parece que a solução padrão é adicionar um campo oculto ao formulário, ao passar a validação, que tem o nome do id do formulário. Então, quando form.submit () é chamado, isso é passado ao longo do botão de envio. No entanto, esta solução parece muito desonesta para mim e então me pergunto se devo:

a) Use um método alternativo para detectar qual formulário foi submetido que não depende depender de passar o botão enviar. Em caso afirmativo, qual é a alternativa? Obviamente, ter um campo escondido extra desde o início não é melhor.

b) Use uma solução alternativa de Javascript que me permita manter meu design não-Javascript. Por exemplo, existe uma alternativa para form.submit () que me permite passar em dados extras?

c) Suck-lo e basta inserir um campo oculto usando o Javascript.

UPDATE: Aceitei a resposta correta, mas eu só queria esclarecer meu erro aqui, então seria mais útil para os outros. Eu uso Mootools e eu creio muito ingenuamente que, quando usei AddEvent (‘submit’ …), eu precisava chamar imediatamente event.stop () para impedir que o envio fosse enviado. Na verdade, este não é o caso e eu só posso chamar event.stop () somente se a validação falhar. Caso contrário, o envio padrão é triggersdo, como de costume, e usar form.submit () torna-se completamente desnecessário.

Você pode enviar os formulários para diferentes manipuladores com action=file1.php e action=file2.php .

Eles são processados ​​usando um monte do mesmo código? Coloque isso em arquivos separados, inclua os pontos em comum e escreva os bits exclusivos em cada um dos arquivos de manipulação. Não corte, organize.

Para a validação de Javascript, não interrompa a ação padrão, em seguida, retome, em vez disso:

 if (validation != valid) { return false; } 

Dessa forma, se o JS estiver desligado ou a validação falhar, a ação / evento do formulário está intacta e ele se comporta conforme o esperado, caso contrário, é bonks. E certamente, certamente retem a validação do lado do servidor. Essa é a validação “real”, o lado do cliente é apenas para agradar o usuário e economizar tempo. Nunca confie nisso por SEU amor.

Você pode personalizar a ação do formulário para adicionar uma chave / valor de access; como action="formhandle.php?formid=10"