Checking a contact form with success and error messages
Attention to the corrections I have made over time!
PHP CODE
if (isset($_POST['contact'])) {
$nomecomp = test_input($_POST["nomecomp"]);
if (!preg_match("/^[a-zA-Z ]*$/",$nomecomp)) {
$nomecompErr = "Apenas letras e espaços permitidos";
}
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Email inválido";
}
$assunto = test_input($_POST["assunto"]);
if (!preg_match("/^[a-zA-Z ]*$/",$assunto)) {
$assuntoErr = "Apenas letras e espaços permitidos com máximo de 25
carácteres";
}
$mensagem = test_input($_POST["mensagem"]);
if (!preg_match("/^[a-zA-Z ]*$/",$mensagem)) {
$mensagemErr = "Apenas letras e espaços permitidos";
}
else
{
echo '<script>',
'jsFunction();',
'</script>';
$mailto = "[email protected]";
$headers = "From:". $email;
$txt = "Recebes-tes um email de ". $nomecomp . ".\n\n".$mensagem;
mail($mailto, $assunto,$txt,$headers);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
FORM
<form method="post" role="form" class="contactForm" action="">
<div class="col-md-6 col-sm-6 col-xs-12 left">
<div class="form-group">
<span class="errormessage">* <?php echo $nomecompErr;?> *</span>
<input type="text" name="nomecomp" class="form-control form"
id="name" placeholder="Nome Completo" REQUIRED />
</div>
<div class="form-group">
<span class="red">* <?php echo $emailErr;?>*</span>
<input type="email" class="form-control" name="email" id="email"
placeholder="Email"REQUIRED />
</div>
<div class="form-group">
<span class="error">* <?php echo $assuntoErr;?>*
</span>
<input type="text" class="form-control" name="assunto"
id="subject" placeholder="Assunto" maxlength="25" REQUIRED/>
</div>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 right">
<div class="form-group">
<span class="error">* <?php echo $mensagemErr;?>*</span>
<textarea class="form-control" name="mensagem" rows="5"
placeholder="Mensagem" REQUIRED></textarea>
</div>
</div>
<div class="col-xs-12">
<!-- Button -->
<button type="submit" id="submit" name="contact" class="form
contact-form-button light-form-button oswald light fundoazul">Enviar
email</button>
</div>
</form>
JS
function jsFunction() {
$.bootstrapGrowl("A sua mensagem foi enviada com sucesso!", { type: 'success' });
}, 1000;
</script>
Library
<script src="js/jquery.bootstrap-growl.min.js" type="text/javascript">
</script>
Resolution with PHP and JS
New JavaScript
$( document ).ready(function() {
var aux= "<?php echo($_SESSION['varphp']); ?>";
if(aux == 1) {
$.bootstrapGrowl("A sua mensagem foi enviada com sucesso", {
type: 'success' });
}
});
</script>
PHP
Declare the session variable
$_SESSION["varphp"]=0;
And change this:
echo '<script>',
'jsFunction();',
'</script>';
For this reason:
$_SESSION["varphp"]=1;