Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

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:
<?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
7656
Visitas
3
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 ;)
0
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
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 ;)
0
Puntos
Por suco hace 96 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate