Comunidad de diseño web y desarrollo en internet online

Problemas con la respuesta del Formulario de contacto

Citar            
MensajeEscrito el 29 Oct 2008 12:05 pm
Buenas, en primer lugar hola a todos y pido disculpas anticipadas por si este no es el sitio correcto para poner este tema.
Dicho esto os explico:
Tengo un formulario de contacto el cual se envía correctamente y me llegan los datos que el cliente a puesto, pero tiene un problema, y es que al hacer click en enviar se queda "pensando" y no hace nada mas, sin embargo el correo llega correctamente al destino. Debería mostrar un mensaje de "enviado correctamente" pero no es asi.
El formulario original corre bajo flash 6 y actionscript 1.0, he logrado que funcione con flash 8 y actionscript 2.0; pero creo que tengo un error al recibir la respuesta desde el archivo php, por lo que no muestra la respuesta.
pongo a continuación los códigos:

esta es la función que comprueba el formulario:

Código :

onClipEvent (load) {
   function enviarFormulario() {      
   
      //ruta = this;
      // compruebo que el campo nombre y apellidos no esté vacío
      if (isBlank(nombreV)) {
         _parent.submitForm_mc.avisar("Es necesario rellenar el campo Nombre y Apellidos");
         Selection.setFocus("nombreV");
         Selection.setSelection(0, 0);
      } else {
         // compruebo que el correo electrónico no esté vacío
         if (isBlank(emailV)) {
            _parent.submitForm_mc.avisar("Es necesario rellenar el campo Correo Electrónico");
            Selection.setFocus("emailV");
            Selection.setSelection(0, 0);
         } else {
            // compruebo que el correo electrónico esté bien escrito
            if (!isMail(emailV)) {
               _parent.submitForm_mc.avisar("El campo Correo Electrónico no es correcto");
               Selection.setFocus("emailV");
               Selection.setSelection(0, emailV.length);
            } else {
               // como localidad y empresa y teléfono no son obligatorios no compruebo nada
               if (isBlank(consultaV)) {
                  _parent.submitForm_mc.avisar("Es necesario rellenar el campo Consulta");
                  Selection.setFocus("consultaV");
                  Selection.setSelection(0, 0);
               } else {
                  if (isBlank(telV)) {
                     datosUser.telefono = "No cumplimentado";
                  } else {
                     datosUser.telefono = telV;
                  }
                  if (isBlank(localidadV)) {
                     datosUser.localidad = "No cumplimentado";
                  } else {
                     datosUser.localidad = localidadV;
                  }
                  if (isBlank(empresaV)) {
                     datosUser.empresa = "No cumplimentado";
                  } else {
                     datosUser.empresa = empresaV;
                  }
                  datosUser.nombre = nombreV;
                  datosUser.email = emailV;
                  datosUser.localidad = localidadV;
                  datosUser.empresa = empresaV;
                  datosuser.telefono = telV;
                  datosUser.consulta = consultaV;
                  
                                    
                  datosUser.sendAndLoad ("contact_form.php",respuesta,"GET");
                  // el php debe responder status=formOk si el envío se hizo bien
               
                  
                     }
                  }
               }
            }
         }
      }




La que lo valida:

Código :

// función para validar el email ------------------------------------------
_global.isMail = function(arg) {
   // compruebo que no este vacía la cadena exaustivamente
   if (arg == "" || arg == null || arg == "null" || arg == undefined || arg == "undefined") {
      return false;
      //trace("cadena vacía");
      // compruebo si hay una arroba y solo una
   } else if (arg.indexOf("@") == -1 || arg.indexOf("@") != arg.lastIndexOf("@")) {
      return false;
      //trace("núm de @ erróneo");
   } else {
      // dividimos la direccion en usuario y dominio
      var partes = arg.split("@");
      var usuario = partes[0];
      var dominio = partes[1];
      // compruebo usuario
      if (usuario.length<1) {
         return false;
         //trace("usuario vacío");
      } else {
         // compruebo si hay algún carácter raro
         var caracteresProhibidos = new Array("º", "ª", "!", "#", "$", "%", "&", "¬", "/", "(", ")", "=", "?", "¿", "¡", ",", ";", ":", "[", "]", "{", "}", "á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú");
         var numCaracteresProhibidos = 0;
         for (var k = 0; caracteresProhibidos[k]; k++) {
            if (usuario.indexOf(caracteresProhibidos[k]) != -1) {
               numCaracteresProhibidos++;
            }
         }
         if (numCaracteresProhibidos>0) {
            //trace("caracteres prohibidos encontrados");
            return false;
            // compruebo dominio
         } else if (dominio.indexOf(".") == -1 || dominio.length<1) {
            return false;
            //trace("núm de puntos erróneo en dominio");
         } else {
            var partes_dominio = dominio.split(".");
            var extension = partes_dominio[partes_dominio.length-1];
            // compruebo que el dominio tenga como mínimo 3 chr antes del punto
            if (dominio.length-extension.length<4) {
               //trace("dominio menor de 3 chr");
               return false;
            } else if (extension.length<2 || extension.length>4) {
               //trace("longitud de extension errónea");
               return false;
            } else {
               //trace("mail correcto");
               return true;
            }
         }
      }
   }
};
// función para comprobar si un campo está en blanco
_global.isBlank = function(valor) {
   if (valor == "" || valor == undefined || valor == null || valor.length<1) {
      return true;
   } else {
      return false;
   }
};


y la que recibe la respuesta:

Código :

// objetos loadvars
_global.datosUser = new LoadVars();
_global.respuesta = new LoadVars();
respuesta.onLoad = function() {
   if (respuesta.status == "formOk") {
            _parent.submitForm_mc.avisar("envio correcto");
            formTitles.formulario_mc.submitForm_mc.submit.enabled = true;
            cleanForm ();
         }
      
      else {
         _parent.submitForm_mc.avisar("Fallo en el envío");
         trace ("Error de servidor");
               
                     }
};


La verdad no se dónde está el error si pueden ayudarme se lo agradezco. Si necesitan algún datos más diganmelo.
Un saludo y hasta pronto

Por juanjo5304

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Oct 2008 04:22 pm
Vaya tremendo ladrillo, un brillante ejemplo de la programación espaghetti. Si quieres dedicarte a la programación te diría que reduzcas el script al menos a la mitad, sino alégrate de que funcione :)
Posiblemente el PHP no esté imprimiendo la respuesta, si tienes el link al formulario en línea le echamos un ojo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Oct 2008 09:39 pm
el formulario no lo tengo en linea, pero el php es el siguiente:

Código :

<?php
$sendTo = "[email protected]";
$subject = "ayoma.es";
$consulta = $_GET['consulta'];
$telefono = $_GET['telefono'];
$empresa = $_GET['empresa'];
$localidad = $_GET['localidad'];
$email = $_GET['email'];
$nombre = $_GET['nombre'];
   //send mail
   $headers  = "From: $email\r\n";
   //$headers .= 'MIME-Version: 1.0' . "\r\n";
   //$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $msg = "Mensaje de Ayoma.es:\n\nNombre:".$nombre."\n\nEmail:".$email."\n\nLocalidad:".$localidad."\n\nEmpresa:".$empresa."\n\nTelefono:".$telefono."\n\nMensaje:".$consulta."";
   mail($sendTo, $subject, $msg, $headers);
   echo "status=formOk";
?>


De que manera reducirias tu el script?
Gracias anticipadas por contestar

Por juanjo5304

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2008 09:51 am
El script imprime el mensaje luego del comando mail, es decir si lo envía supongo que lo está imprimiendo. Dado que el sendAndLoad lo tienes en el onLoad de un MC, fíjate que respuesta este bien apuntado

trace("Recibe en "+respuesta)
datosUser.sendAndLoad ("contact_form.php",respuesta,"GET");

El trace no debería sacar undefined. Sino usa _global.respuesta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Oct 2008 11:16 am
Jorge ya di con el problema, esta en la respuesta que no es la misma en el php y en flash, ahora si me imprime que el correo se ha enviado correctamente.
El problema que sigue ahora es que no limpia los campos despues de enviarlo.

Por juanjo5304

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2008 11:38 am
Ya esta solucionado tambien lo de limpiar los campos.... despues de enviar indico:
cleanForm ();
pero se me olvido crear la funcion.... jjejejej.... :shock: :oops: :roll:
Gracias por tu ayuda igualmente que me ha hecho pensar.... ^^
Cuando este listo del todo os avisare para que lo veais en funcionamiento
Un saludo y hasta pronto.

Por juanjo5304

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2008 01:30 pm
HOLA DE NUEVO A TODOS!!!!
YA PODEIS VER EL FORMULARIO DE CONTACTO TERMINADO EN LA SIGUIENTE DIRECCION:
http://www.ayoma.es
Un saludo y hasta pronto.

Por juanjo5304

3 de clabLevel



 

firefox

 

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