Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tendo um problema quanto ao usuário ao visualizar a página de confirmação de envio, com o código e tudo mais.
Ele envia o formulário e o mesmo chega corretamente, porém por algum motivo ele resolve utilizar o botão direito do mouse ou mesmo o botão do navegador para então clicar em "voltar", ou mesmo "atualizar página". Feito isto ele acaba enviando o formulário novamente.
Por tanto gostaria de saber se há alguma forma de "bloquear" esta opção, onde ao tentar usar uma destas funções, seja exibida uma mensagem em "alert java" dizendo que se ele "confirmar" o formulário será enviado novamente.
(até já vi alguns sites que quando eu clico em "Atualizar" a página retorna esta mensagem)
Obrigado!
>
Não entendi muito bem... Mas, no mesmo arquivo onde encontra-se o formulário você pode fazer o action do formulário pra ele mesmo, assim você verifica o tipo de requisição e após isso, aí sim você redireciona ou faz oque bem entender. Mas só se a requisição for a que você deseja, caso contrário é exibido o formulário. Nesse caso caso o internauta tentar retornar ou atualizar a página pedirá reenvio de informações. Caso ele já tenha enviado e você não queria duplicar as entradas, você pode verificar antes de salvar ou seja lá oque estiver fazendo, para que haja apenas um registro.
Caso não resolver explique-nos melhor oque desejas!
Então, seria mais ou menos isto sim.
Veja como funciona no momento ... talvez fique mais fácil compreender:
1. Tela de Login
2. Formulário (sem script PHP, pois este está em um arquivo à parte que é executado ao ser pressionado o botão enviar)
3. Execução do Script PHP
4. Tela de Confirmação de Envio
Minha solução seria:
Formulário > Salva os dados > Redireciona para algum lugar
Assim quando você der F5 por exemplo estará em uma outra página e recarregará ela mesma, se voltar ele não voltará para o arquivo onde os dados foram salvos, voltará para o formulário se eu não estou enganado.
Agora creio que desabilitar o botão voltar é impossível, o que você pode fazer é, sempre setar sempre vazio para os campos do formulário e/ou utilizar JavaScript para dar uma mensagem de confirmação se usuário deseja realmente voltar:
<script>
window.onbeforeunload = function() {
return 'Deseja realmente voltar?';
};
</script>
Espero ter ajudado.
É possível reconhecer se o cara está "reenviando" os mesmos dados.
Ex:
http://wbruno.com.br/php/diferenciar-refresh-f5-de-postsubmit/
Não entendi muito bem... Mas, no mesmo arquivo onde encontra-se o formulário você pode fazer o action do formulário pra ele mesmo, assim você verifica o tipo de requisição e após isso, aí sim você redireciona ou faz oque bem entender. Mas só se a requisição for a que você deseja, caso contrário é exibido o formulário. Nesse caso caso o internauta tentar retornar ou atualizar a página pedirá reenvio de informações. Caso ele já tenha enviado e você não queria duplicar as entradas, você pode verificar antes de salvar ou seja lá oque estiver fazendo, para que haja apenas um registro.
Caso não resolver explique-nos melhor oque desejas!