Duda sobre formulario php
Buenos días, he encontrado un tuto de un formulario php sencillo y efectivo pero al que querría modificar algo que no consigo.
formulario.hmtl:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-es" lang="es-es">
<head>
<title>Ejemplo de envío de formulario por email con php</title>
<meta name="description" content="Formulario de contacto enviado por correo electronico usando php"/>
</head>
<body>
<div id="formulario">
<form action="enviar.php" method="POST">
Nombre: <input name="nombre" size="40" type="text" />
Email: <input name="email" size="40" type="text" />
Asunto: <input name="asunto" size="40" type="text" />
Para: <select name="para">
<option value="publicidad@misitio.com">Dpto. de publicidad</option>
<option value="administracion@misitio.com">Dpto. de administracion</option>
</select>
Mensaje: <textarea cols="40" rows="6" name="mensaje"></textarea>
<input name="enviar" type="submit" value="Enviar" />
</form>
</div>
</body>
</html>
Y enviar.php
<?php
//variable de validacion
$valida = true;
if (empty($_POST['nombre'])) {
echo "<b>No se especifico nombre</b><br/>";
$valida = false;
}
if (empty($_POST['email'])) {
echo "<b>No se especifico E - mail</b><br/>";
$valida = false;
}
if (empty($_POST['asunto'])) {
echo "<b>No se especifico asunto</b><br/>";
$valida = false;
}
if (empty($_POST['mensaje'])) {
echo "<b>Por favor, no envie un mensaje en blanco</b><br/>";
$valida = false;
}
// Validamos la direccion de correo electronico
if (!strchr($_POST['email'],"@") || !strchr($_POST['email'],"."))
{
echo "<b>No es un correo valido</b><br/>";
$valida = false;
}
// Si las comprobaciones son correctas
if ($valida == true)
{
// Creamos el header para el mensaje
// para:
$to = $_POST['para'];
// Asunto
$subject = $_POST['asunto'];
// Cabeceras del mail (Content-Type y demas info)
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
// El From: en la forma Nombre <email@sitio.com>, esto garantiza que
// el receptor vea solo el nombre de quien envia
$headers .= "From: ".$_POST['nombre']." <".$_POST['email'].">\n";
// Opcional: Resopnder a:
$headers .= "Reply-To: " . $_POST['email']."\n";
//Opcional X-Mailer
$headers .= "X-Mailer: PHP/" . phpversion();
// Cuerpo del email
$message = $_POST['mensaje'];
if(mail($to, $subject, $message,$headers))
{
echo "<p>Mensaje enviado, Gracias por sus sugerencias.<br /><a href=\"javascript:history.go(-1)\">Volver</a></p>";
}
}
?>
La cuestión es que al dar enviar, si dejas algun campo en blanco salta enviar.php y me gustaría que esos mensajes se cargaran en el campo en el que falta info en formulario.hmtl
Alguien sabe como se podría hacer?
Muchas gracias
saludos
phpninja
Si no te he entendido mal,
necesitas validar que los datos del formulario han sido rellenados antes de que se pueda enviar , correcto?
Para ello necesitas javascript. Busca validación de formularios con javascript en google.
codigonexo
Tienes varios plugins de Jquery que te pueden hacer más fácil esta implementación, fancyform por ejemplo.
chuchonieto
A mi Jquery validity siempre me ha dado buenos resultados ;)