O envio repetido do formulário é o problema mais comum em aplicativos da Web de vários usuários e causa muitos problemas. Existem muitos cenários de aplicação que encontram problemas de submissão duplicados, como:
Clique no botão Enviar duas vezes. Clique no botão Atualizar. Repita as ações anteriores usando o botão Voltar do navegador, resultando em envio repetido do formulário. Repita os formulários de envio usando o histórico do navegador. Solicitações HTTP repetidas do navegador.
Várias maneiras de evitar envios repetidos de formulários
1. Desative o botão Enviar . Use JavaScript para fazer o botão enviar o botão Desativar após o envio do formulário. Este método impede que os usuários impacientes cliquem em botões várias vezes. Mas há um problema. Se o cliente proibir o JavaScript, esse método será inválido.Meu artigo anterior disse que o uso de alguns plugins jQuery funciona bem.
2. Post/redirect/get Mode . Execute o redirecionamento da página após o envio, chamado modo pós-redirect-get (PRG). Em suma, quando o usuário enviar o formulário, você executa um redirecionamento do cliente e acessa a página de informações de sucesso do envio.Isso pode evitar envios repetidos causados pelos usuários que pressionam o F5, e não haverá avisos de envios repetidos de formulários do navegador e também poderá eliminar os mesmos problemas causados pela frente e de recuperação dos navegadores.
3. Armazene um logotipo especial na sessão . Quando a página do formulário é solicitada, uma sequência de sinalizador especial é gerada, que está presente na sessão e colocada no campo oculto do formulário. Ao aceitar dados do formulário de processamento, verifique se a sequência de identificação existe e exclua -os da sessão imediatamente e processe os dados normalmente.Se você achar que não há string de sinalização válida no envio do formulário, significa que o formulário foi enviado e esse envio é ignorado.
Isso oferece ao seu aplicativo da Web mais avançado proteção XSRF.
4. Adicione restrições no banco de dados. Adicione restrições exclusivas no banco de dados ou crie índices exclusivos para evitar dados duplicados. Esta é a maneira mais eficaz de impedir envios repetidos de dados.O acima é uma introdução a esses 4 métodos. Se você tiver uma solução melhor, diga -me e este artigo será atualizado continuamente.