Mi problema es que tengo una web con un formulario de contacto (que original!!!
Estoy utilizando el tutorial de esta web, empleando un archivo send.php con el siguiente código:
Código PHP :
<?php
if ($_POST['comprob']==1){
$nombres = $_POST['names'];
$apellidos = $_POST['lastnames'];
$email = $_POST['email'];
$pais = $_POST['country'];
$ciudad = $_POST['city'];
$dir = $_POST['adress'];
$tel = $_POST['phone'];
$movil = $_POST['cellphone'];
$coment = $_POST['body'];
$comose = $_POST['howyouget'];
$otro = $_POST['otherway'];
$header = 'From: ' . $email . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$mensaje = "Este mensaje fue enviado por " . $nombres . " " . $apellidos . " desde el correo de la web ####" . " \r\n";
$mensaje .= "E-mail: " . $email . " \r\n";
$mensaje .= "Ciudad: " . $ciudad . " \r\n";
$mensaje .= "País: " . $pais . " \r\n";
$mensaje .= "Dirección: " . $dir . " \r\n";
$mensaje .= "Teléfono: " . $tel . " \r\n";
$mensaje .= "Móvil: " . $movil . " \r\n";
$mensaje .= "Mensaje: " . $_POST['body'] . " \r\n";
$mensaje .= "Se entero por: " . $comose . " " . $otro . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());
$para = '######@###.com';
$asunto = 'Contacto desde la web ####';
mail($para, $asunto, utf8_decode($mensaje), $header);
echo "<script type='text/javascript'>alert('El correo se ha enviado correctamente')</script>";
}
?>
Este funciona de maravilla... siempre envia los correos de manera simple y eficiente pero en el tutorial no explican como validar los campos vacios. (por el momento no estoy interesado en validar teléfono, e-mail, edades y esos otros tipos de datos, solo necesito validar que el campo no esté vacio y punto)
Así que cree este script de java para que me validara los campos, luego me enviase un valor a un campo oculto el cual le sirve al scrip de php (ver arriba) para determinar si envia o no el correo.
Código Javascript :
<script type="text/javascript">
function Sendemail(){
if (document.getElementById("names").value==""){
alert("El campo Nombres no puede estar vacio");
document.getElementById("names").focus();
}else{
if (document.getElementById("lastnames").value==""){
alert("El campo Apellidos no puede estar vacio");
document.getElementById("lastnames").focus();
}else{
if (document.getElementById("email").value==""){
alert("El campo E-mail no puede estar vacio");
document.getElementById("email").focus();
}else{
if (document.getElementById("country").value=="Seleccione..."){
alert("El campo País no puede estar vacio");
document.getElementById("country").focus();
}else{
if (document.getElementById("city").value==""){
alert("El campo Ciudad no puede estar vacio");
document.getElementById("city").focus();
}else{
if (document.getElementById("phone").value==""){
alert("El campo Teléfono no puede estar vacio");
document.getElementById("phone").focus();
}else{
if (document.getElementById("howyouget").value=="Seleccione..."){
alert("El campo 'Como se enteró' no puede estar vacio");
document.getElementById("howyouget").focus();
}else{
if (document.getElementById("otherway").value=="Otro ¿cual?"){
alert("Por favor denos mas detalles de como se enteró de nosotros");
document.getElementById("otherway").focus();
}else{
document.getElementById("comprob").value="1";
}
}
}
}
}
}
}
}
}
</script>Seguro no es el mas simple pero no soy muy experto. Este también funciona de maravilla el problema es que cuando le asigno la función Sendemail() al evento onClick del botón submit, experimento dos problemas:
1. Cada que hay un campo vacio, sale el mensaje de mi javascript y al presionar Aceptar, no me queda el formulario sino que aparece una página en blanco y en la barra de direcciones aparece ..miweb/contactenos/send.php.
2. Cuando todos los campos son validados y se envia el correo, en send.php complementé el código con este script
Código PHP :
echo "<script type='text/javascript'>alert('El correo se ha enviado correctamente')</script>"; para que me envie un mensaje comentandome el correcto estado del envio. Sin embargo experimento el mismo problema que en la duda anterior, despues de aceptar me queda una web en blanco.Lo ideal sería que despues de enviar el correo, o me quede otra vez el formulario en blanco o que se cambie el div contenedor del formulario por una vista previa del correo enviado o cualquier información pero que se regrese a la web ppal y no a la dirección del send.php.
Uffff espero haberme hecho entender.
Muchas gracias por su ayuda... en serio la necesito
