Formulário enviado repetidas vezes

Enviada por Cássia 
Cássia
Formulário enviado repetidas vezes
23 de May de 2016 às 07:31AM
Olá pessoal...

Eu tenho um formulário que envia por e-mail os dados fornecidos pelo usuário via método Post. Neste formulário eu faço a validação de alguns campos (CPF e alguns campos são obrigatórios). Quando o usuário clica em "Enviar" o processo às vezes é lento e, alguns usuários, clica várias vezes no botão "Enviar" causando o envio do mesmo formulário várias vezes.

Preciso de uma forma para bloquear este envio repetidas vezes, mas sem bloquear a validação dos campos.


<?php
require_once '_js/ValidaCPF.php';

$todos_campos_preenchidos = TRUE;
$msg_email_enviado = FALSE;
$ValidaCPF = TRUE;


if (isset ($_POST['salvar'])) {

$contato = $_POST['contato'];
$email = $_POST['email'];
$cpf = $_POST['cpf'];

if(trim($_POST['contato']) == '') {
$todos_campos_preenchidos = FALSE;
}elseif (trim($_POST['email']) == '') {
$todos_campos_preenchidos = FALSE;
}elseif (trim($_POST['cpf']) == '') {
$todos_campos_preenchidos = FALSE;
}


//Valida CPF
$ValidaCPF = ValidaCPF($cpf);


If (($todos_campos_preenchidos) && ($ValidaCPF)) {

$para = "meuemail@meuemail.com";
$mailoculto = "outroemail@outroemail.com";

//Codificações para envio do e-mail
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "Reply-To: $email". "\r\n";
$headers .= "Bcc: $mailoculto";

//Assunto do e-mail
$assunto = "Contato";

//Corpo da mensagem
$mensagem = "<table><tr><td width='180'><strong>Assunto:</strong></td><td>Envio de contato</td></tr>";
$mensagem .= "<tr><td><strong>Contato: </strong></td><td>".$contato."</td></tr>";
$mensagem .= "<tr><td><strong>E-mail: </strong></td><td>".$email."</td></tr>";
$mensagem .= "<tr><td><strong>CPF: </strong></td><td>".$cpf."</td></tr>";
$mensagem .= "<tr><td valign='top'><strong>Data e hora: </strong></td><td>" . date('d/m/Y - H:i') . "</td></tr>";
$mensagem .= "<tr><td valign='top'><strong>IP's: </strong></td><td>" . get_ips() . "</td></tr></table>";


//Envio do e-mail
If (mail($para, $assunto, $mensagem, $headers)){

//Enviando e-mail de confirmação para o e-mail cadastrado
$assunto = "Confirmação de Contato";
$mensagem_confirmacao = "Prezado(a) " . trim($contato) . ", <br><br>";
$mensagem_confirmacao .= "Você está recebendo este e-mail por ter solicita cadastro. <br><br>";
$mensagem_confirmacao .= $mensagem;
$headers_confirmacao = 'MIME-Version: 1.0' . "\r\n";
$headers_confirmacao .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers_confirmacao .= "Reply-To: mail-noreply@meuemail.com". "\r\n";

mail(trim($email), $assunto, $mensagem_confirmacao, $headers_confirmacao);

$contato = NULL;
$email = NULL;
$cpf = NULL;
$msg_email_enviado = TRUE;
}
}
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="MSHTML 6.00.2900.3020" name=GENERATOR>
<title>Meu site</title>
</head>


<!-- Datepicker -->
<link rel="stylesheet" href="_js/themes/base/jquery.ui.all.css">
<script src="_js/jquery-1.8.0.js"></script>
<script src="_js/ui/jquery.ui.core.js"></script>
<script src="_js/ui/jquery.ui.widget.js"></script>
<script src="_js/ui/jquery.ui.datepicker.js"></script>
<script src="_js/ui/i18n/jquery.ui.datepicker-pt-BR.js"></script>
<script>
jQuery.noConflict();
(function($) {
$(function() {
$.datepicker.setDefaults( $.datepicker.regional[ "" ] );
$( "#datepicker" ).datepicker( $.datepicker.regional[ "pt-BR" ] );
});
})(jQuery);
</script>

<!-- Mascaras campos inputs -->
<script type="text/javascript" src="_js/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="_js/jquery.maskedinput-1.3.min.js"/></script>
<script type="text/javascript">
jQuery.noConflict();
(function($) {
$(function() {
$('.mask-cpf').mask('999.999.999-99'); //CPF
});
})(jQuery);
</script>


</script>


<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0">

<p><img border="0" src="logo_superior.png" width="1351" height="117"><img border="0" src="_titulo.jpg"></p>

<blockquote>
<blockquote>

<p><font color="#6B6E80" face="Arial" size="2">Preencha os campos abaixo</font></p>

<p><i><font color="#FF0000" face="Arial" size="2">
<!--Postando mensagem de erro caso campos estejam em branco-->
<?php if($todos_campos_preenchidos == FALSE) {
echo 'Todos os campos marcados com (*) são de preenchimento obrigatório';
} elseif ($ValidaCPF == False) {
echo 'CPF informado é inválido!';
}
?>
<!--Fim mensagem de erro caso campos estejam em branco-->
</i></font></p>

<p><i><b><font color="#158EB0" face="Arial" size="2">
<!--Postando mensagem de e-mail enviado-->
<?php if($msg_email_enviado) :
echo 'Formulário enviado com sucesso!' ;
endif;
?>
<!--Fim mensagem de e-mail enviado-->
</i></b></font></p>


<table border="0" width="100%" id="table2">
<tr>
<td>
<form method="POST" name="solicitacao" action="">

<table border="0" width="100%" id="table3" height="368">

<tr>
<td width="300" valign="top"><font color="#6B6E80" face="Arial" size="2">
Pessoa de contato:<sup>*</sup></font></td>
<td valign="top"><input type="text" name="contato" size="29"<?php if ($_SERVER['REQUEST_METHOD'] == "POST") { echo "value=\"" . $contato . "\""; }?>></td>
</tr>
<tr>
<td width="300" valign="top"><font color="#6B6E80" face="Arial" size="2">
E-mail:<sup>*</sup></font></td>
<td valign="top"><input type="text" name="email" size="29"<?php if ($_SERVER['REQUEST_METHOD'] == "POST") { echo "value=\"" . $email . "\""; }?>></td>
</tr>


<tr>
<td width="300" valign="top"><font color="#6B6E80" face="Arial" size="2">
CPF:<sup>*</sup></font></td>
<td valign="top"><input type="text" name="cpf" class="mask-cpf" size="29"<?php if ($_SERVER['REQUEST_METHOD'] == "POST") { echo "value=\"" . $cpf . "\""; }?>></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Enviar" name="salvar"><input type="reset" value="Limpar" name="limpar"></td>

</tr>
</table>
</form>

<p><i><font color="#6B6E80" face="Arial" size="2"><sup>*</sup> Campos de preenchimento obrigatório</font></i></p>
</td>
</tr>
</table>

</blockquote>
</blockquote>

<p><img border="0" src="logo_inferior.png"></p>

</body>
</html>
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.