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>Demo0
Puntos
Puntos
7555
Visitas
Visitas
3
Resp
Resp
Por alber hace 10 años
Admin
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 9 años
Novice
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 9 años
Novice
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 9 años
Novice