Comunidad de diseño web y desarrollo en internet online

Problemas con formulario de contacto

Citar            
MensajeEscrito el 15 Oct 2009 06:08 am
Hola a todos.

Mi problema es que tengo una web con un formulario de contacto (que original!!! :roll: jejeje) y lo cree mediante un formulario con los campos de siempre + un botón reset + un submit.

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. :zzz: :)

Muchas gracias por su ayuda... en serio la necesito

Por alexkudrow

33 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2009 03:30 pm
Dos cosas. Del lado de JavaScript parece que aunque detectes un problema con los datos el formulario se envía igual. Entonces cambia el botón submit por button, asignale el evento onClick la función de comprobación y luego en JavaScript utiliza document.GetElementById("form1").submit(); si no hay problemas con los datos.
En PHP también puedes hacer la verificación de los datos usando la función Empty() en cada campo del formulario.
Un ejemplo más completo de lo que digo aunque se trata de la seguridad del formulario, lo desarrollo en mi página web en:
http://driverop.com.ar/formwebs.php

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Oct 2009 03:23 am
Bravo... sencillamente lo que me estaba haciendo falta.
Sabes que aprendí de todo esto? que se debe tener cuidado a la hora de conjugar PHP y Java en la misma página.
Muchas gracias por tu ayuda. :cool:

Suerte

Por alexkudrow

33 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.