Formulario de contacto con validación en php
En esta ocasión voy a compartir con vosotros un formulario de contacto con validación de campos en php, utilizamos variables para determinar que campos están sin completar y en esa caso mostramos un mensaje con texto rojo al usuario para pedirle que los complete.
Captura:
Empezamos con el php:
Captura:
Empezamos con el php:
<?php $validacion1=false; $validacion2=false; $validacion3=false; $correoenviado=false; if (isset($_POST['nombre'])){ //Comprobamos que el nombre no este en blanco if ($_POST['nombre']=='') $validacion1=true; //Comprobamos que el correo no este en blanco if ($_POST['correo']=='') $validacion2=true; //Comprobamos que el mensaje no este en blanco if ($_POST['mensaje']=='') $validacion3=true; //Si cumple las tres condiciones enviamos el formulario if ($validacion1==false && $validacion2==false && $validacion3==false){ $correoenviado=true; //Descomentar esta linea para enviar el mail //mail ('destinatario','titulo','mensaje','cabeceras'); } } ?>Ahora el formulario en html:
<?php if ($correoenviado==false){?> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulario1"> * Nombre: <?php if ($validacion1==true){?><span class="error">* Campo obligatorio</span><?php }?> <br> <input type="text" class="inputs" name="nombre" value="<?php if (isset($_POST['nombre'])) echo $_POST['nombre']?>" placeholder="Nombre..."><br> * Correo: <?php if ($validacion2==true){?><span class="error">* Campo obligatorio</span><?php }?> <br> <input type="text" class="inputs" name="correo" value="<?php if (isset($_POST['correo'])) echo $_POST['correo']?>" placeholder="Correo..."><br> * Mensaje: <?php if ($validacion3==true){?><span class="error">* Campo obligatorio</span><?php }?> <br> <textarea name="mensaje" class="textareas" placeholder="Mensaje..."><?php if (isset($_POST['mensaje'])) echo $_POST['mensaje']?></textarea><br> <input type="submit" class="botonen" value="Enviar"><br> </form> <?php } else echo 'Correo enviado';?>El estilo css (Opcional):
<style> @import url(http://fonts.googleapis.com/css?family=Lato); .inputs , .textareas, .botonen { width:250px; padding:6px; border:1px solid #ddd; margin:4px 0px; font-family: 'Lato', sans-serif; resize:vertical; } #formulario1 { font-family: 'Lato', sans-serif; padding: 40px; margin: 20px; float: left; border: 1px solid #ddd; } .error { font-size:13px; color:red; } </style>Ahora el ejemplo completo:
<?php $validacion1=false; $validacion2=false; $validacion3=false; $correoenviado=false; if (isset($_POST['nombre'])){ //Comprobamos que el nombre no este en blanco if ($_POST['nombre']=='') $validacion1=true; //Comprobamos que el correo no este en blanco if ($_POST['correo']=='') $validacion2=true; //Comprobamos que el mensaje no este en blanco if ($_POST['mensaje']=='') $validacion3=true; //Si cumple las tres condiciones enviamos el formulario if ($validacion1==false && $validacion2==false && $validacion3==false){ $correoenviado=true; //Descomentar esta linea para enviar el mail //mail ('destinatario','titulo','mensaje','cabeceras'); } } ?> <!document html> <html> <head> <style> @import url(http://fonts.googleapis.com/css?family=Lato); .inputs , .textareas, .botonen { width:250px; padding:6px; border:1px solid #ddd; margin:4px 0px; font-family: 'Lato', sans-serif; resize:vertical; } #formulario1 { font-family: 'Lato', sans-serif; padding: 40px; margin: 20px; float: left; border: 1px solid #ddd; } .error { font-size:13px; color:red; } </style> </head> <body> <?php if ($correoenviado==false){?> <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulario1"> * Nombre: <?php if ($validacion1==true){?><span class="error">* Campo obligatorio</span><?php }?> <br> <input type="text" class="inputs" name="nombre" value="<?php if (isset($_POST['nombre'])) echo $_POST['nombre']?>" placeholder="Nombre..."><br> * Correo: <?php if ($validacion2==true){?><span class="error">* Campo obligatorio</span><?php }?> <br> <input type="text" class="inputs" name="correo" value="<?php if (isset($_POST['correo'])) echo $_POST['correo']?>" placeholder="Correo..."><br> * Mensaje: <?php if ($validacion3==true){?><span class="error">* Campo obligatorio</span><?php }?> <br> <textarea name="mensaje" class="textareas" placeholder="Mensaje..."><?php if (isset($_POST['mensaje'])) echo $_POST['mensaje']?></textarea><br> <input type="submit" class="botonen" value="Enviar"><br> </form> <?php } else echo 'Correo enviado';?> </body> </html>Demo
0
Puntos
Puntos
7656
Visitas
Visitas
3
Resp
Resp
Por alber hace 109 meses
Administrador
Respuesta #1
Muy buen aporte... Estaba haciendo algo así... Solamente que cuando envío el formulario redirecciona a una página de enviado con un mensaje al usuario... Pero no consigo implementarlo. Con header, me da error al mostrar datos anteriormente. ¿Alguien tiene alguna idea?
Muchas gracias. Salu2 ;)
Muchas gracias. Salu2 ;)
0
Puntos
Puntos
Por suco hace 96 meses
Principiante
Respuesta #2
De momento lo apañe... Tenia el formulario en la misma página del index, en una página todo. Lo he sacado a una ventana modal, y listo... Aunque el diseño me gustaba más de la otra manera, pero no encuentro la forma, así que de momento así lo dejare...
0
Puntos
Puntos
Por suco hace 96 meses
Principiante
Respuesta #3
Colocando esta función al principio de la página antes de todo, funciona todo perfecto...
<?php
ob_start()
?>
Lo dejo por si a alguien le sucede lo mismo. Salu2 ;)
<?php
ob_start()
?>
Lo dejo por si a alguien le sucede lo mismo. Salu2 ;)
0
Puntos
Puntos
Por suco hace 96 meses
Principiante