Comunidad de diseño web y desarrollo en internet online

Formulario AS3 y PHP

Citar            
MensajeEscrito el 16 Dic 2010 02:07 am
Hola amigos.
Tengo el sig. problema:
Es un formulario que envía datos vía mail aprovechando un archivo php externo.
El código fue publicado en estas mismas páginas y funciona perfectamente en una película independiente.
El problema es que estoy tratando de usarlo desde un MC que se agrega mediante addChild() y allí deja de funcionar.
Coloco el código a ver si alguien me dice qué debería cambiarle para que funcione.

Código ActionScript :

stop();
//estos son dos campos de texto dinámico
txtNombre.text = "";
txtEmail.text = "";
/*
Función que se ejecuta al presionar el botón btEnviar y comprueba que los campos están rellenos
y también que la dirección de mail cumpla algunas normas básicas
*/
function irAEnviar(event:MouseEvent):void {
   var vacio:String= "";
   if (txtNombre.text == ""){
      vacio += "Falta su nombre | ";
   }
   if (txtEmail.text == ""){
      vacio += "Escriba su email | ";
   }
   if (txtEmail.text.indexOf("@") == -1 || txtEmail.text.indexOf("@") != txtEmail.text.lastIndexOf("@")) {
      vacio += "email incorrecto | ";
   }
   if(vacio==""){
   //Creamos misVariables la cual contendrá nuestros campos.
   var misVariables:URLVariables = new URLVariables();
   //Definimos los campos y les agregamos el valor de las cajas de texto.
   misVariables.nombre = this.txtNombre.text;
   misVariables.email = this.txtEmail.text;
   misVariables.listado = this.colecta.text;
   }
   else{
      lbRespuesta.text = vacio;//campo dinámico para mostrar mensajes al usuario
   }
   //Creamos la instancia pedido que contendrá los datos de envío.
   var pedido:URLRequest = new URLRequest();

   //Pasamos los datos al pedido, el método de envío y le cargamos misVariables.
   pedido.url = "http://www.paginaweb.com.ar/formulario.php";
   pedido.method = URLRequestMethod.POST;
   pedido.data = misVariables;

   //Creamos la instancia cargador.
   var cargador:URLLoader = new URLLoader();

   //Damos formato de Variables a cargador .
   cargador.dataFormat = URLLoaderDataFormat.VARIABLES;

   //Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler.
   cargador.addEventListener(Event.COMPLETE, completeHandler);

   //intentamos cargar el pedido y si hay algún error lo detectamos
   try {
      if(vacio==""){
      cargador.load(pedido);
      }
   } catch (error:Error) {
      lbRespuesta.text= "Error en el envío, intente más tarde";
   }
   
   //Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal.
   function completeHandler(event:Event):void {
      lbRespuesta.text=event.target.data.respuestaPHP;
     //navigateToURL(new URLRequest("pie.html"), "pie");
     play();
   }
}

//Listener que está esperando el Click en el btEnviar para ejecutar la función irAEnviar
enviarForm.addEventListener(MouseEvent.CLICK, irAEnviar);

No publico el archivo php porque como dije al principio, siendo un swf independiente funciona perfecto.
Gracias.

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 16 Dic 2010 03:44 pm
¿Estás dejando el código dentro del MC o lo estás moviendo a otro lado? Así como se ve, está correctamente encapsulado

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Dic 2010 04:40 pm
Hola Solisarg, efectivamente el código está dentro del mc.
Como ya estaba desesperando al no encontrar solución, probé haciendo el mismo form pero independientemente y para sorpresa descubro que no está funcionando, al parecer, el problema está al pasar/recuperar las variables del php

Dejo entonces el código php también para que lo vean

Código PHP :

<?php

$email = $_POST['email'];
$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$horario = $_POST['horario'];
$consulta = $_POST['consulta'];
$boletin = $_POST['boletin'];

$fecha = date('d/m/Y', time());

// include remitente IP in the comentarios.
$full_comentarios = $_SERVER['REMOTE_ADDR'] . "\n\n" . $IP;
$IP= $full_comentarios;

$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 = "Baritiff - Constacto" . " \r\n";
$mensaje .= "Enviado el " . $fecha . " por: " . $nombre . " \r\n";
$mensaje .= "E-mail: " . $email . " \r\n";
$mensaje .= "Teléfono: " . $telefono . " en el horario: " . $horario . " \r\n";
$mensaje .= "¿Suscribe al Boletín?: " . $boletin . " \r\n";
$mensaje .= "Ha realizado la sig. consulta:" . " \r\n";


$para = '[email protected]';
$asunto = 'Consulta';

if(mail($para, $asunto, utf8_decode($mensaje), $header)){
echo "respuestaPHP=Gracias por consultarnos. Nos pondremos en contacto con ud. a la brevedad.";
   }else{
      echo "respuestaPHP=Ocurrió un error y el mensaje no ha sido enviado";
   };
?>


Una acotación, hay una línea que dice consulta y en el flash no se corresponde porque dice comentarios, pero ya emparejé las variables y eso no ocasionaba el error.

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 16 Dic 2010 04:45 pm
Perdón, puse un php con más campos, pero el "esqueleto" es el mismo

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 16 Dic 2010 05:13 pm
¿El php está en el mismo dominio que el swf?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Dic 2010 12:53 am
Sí, en el mismo dominio.

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 17 Dic 2010 12:42 pm
Para evitar desprolijidades, vuelvo a publicar as y php.
En la prueba que hago, me parece que no llega a comunicarse el flash con el php.
Completo los datos, hago el envío, pero se no me llega nada por mail ni tampoco se imprime nada en el campo msg que debería mostrar el ok del envío o el error

Código ActionScript :

this.stop();
txtNombre.text = "";
txtEmail.text = "";
txtTelefono.text = "";
txtHorario.text = "";
txtConsulta.text = "";
//Función que se ejecuta al presionar el botón btEnviar.
function irAEnviar(event:MouseEvent):void {
   var vacio:String= "";
   if (txtNombre.text == ""){
      vacio += "Falta su nombre | ";
   }
   if (txtEmail.text == ""){
      vacio += "Escriba su email | ";
   }
   if (txtEmail.text.indexOf("@") == -1 || txtEmail.text.indexOf("@") != txtEmail.text.lastIndexOf("@")) {
      vacio += "email incorrecto | ";
   }
   if (txtTelefono.text == ""){
      vacio += "Número de teléfono | ";
   }
   if(vacio==""){
   //Creamos misVariables la cual contendrá nuestros campos.
   var misVariables:URLVariables = new URLVariables();
   
   //Definimos los campos y les agregamos el valor de las cajas de texto.
   misVariables.nombre = txtNombre.text;
   misVariables.email = txtEmail.text;
   misVariables.telefono = txtTelefono.text;
   misVariables.horario = txtHorario.text;
   misVariables.consulta = txtConsulta.text;
   misVariables.boletin = boletin.text;//este campo dinámico ya viene relleno de antemano
   }
   else{
      msg.text = vacio;
   }

   //Creamos la instancia pedido que contendrá los datos de envío.
   var pedido:URLRequest = new URLRequest();

   //Pasamos los datos al pedido, el método de envío y le cargamos misVariables.
   pedido.url = "http://www.xxxxxx.com.ar/forms/consulta.php";
   pedido.method = URLRequestMethod.POST;
   pedido.data = misVariables;

   //Creamos la instancia cargador.
   var cargador:URLLoader = new URLLoader();

   //Damos formato de Variables a cargador .
   cargador.dataFormat = URLLoaderDataFormat.VARIABLES;

   //Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler.
   cargador.addEventListener(Event.COMPLETE, completeHandler);

   //intentamos cargar el pedido y si hay algún error lo detectamos
   try {
      if(vacio==""){
      cargador.load(pedido);
      }
   } catch (error:Error) {
      msg.text= "Error en el envío, intente más tarde";
   }
   
   //Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal.
   function completeHandler(event:Event):void {
      msg.text=event.target.data.respuestaPHP;//
   }
}

//Listener que está esperando el Click en el btEnviar para ejecutar la función irAEnviar
btEnviar.addEventListener(MouseEvent.CLICK, irAEnviar);
*/

Código PHP :

<?php

$email = $_POST['email'];
$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$horario = $_POST['horario'];
$consulta = $_POST['consulta'];
$boletin = $_POST['boletin'];

$fecha = date('d/m/Y', time());

// include remitente IP in the comentarios.
$full_comentarios = $_SERVER['REMOTE_ADDR'] . "\n\n" . $IP;
$IP= $full_comentarios;

$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 = "Baritiff - Contacto" . " \r\n";
$mensaje .= "Enviado el " . $fecha . " por: " . $nombre . " \r\n";
$mensaje .= "E-mail: " . $email . " \r\n";
$mensaje .= "Teléfono: " . $telefono . " en el horario: " . $horario . " \r\n";
$mensaje .= "¿Suscribe al Boletín?: " . $boletin . " \r\n";
$mensaje .= "Ha realizado la sig. consulta:" . $consulta . " \r\n";


$para = '[email protected]';
$asunto = 'Baritiff - Consulta';

if(mail($para, $asunto, utf8_decode($mensaje), $header)){
echo "respuestaPHP=Gracias por consultarnos. Nos pondremos en contacto con ud. a la brevedad.";
   }else{
      echo "respuestaPHP=Ocurrió un error y el mensaje no ha sido enviado";
   };
?>

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8
Citar            
MensajeEscrito el 17 Dic 2010 01:05 pm
MIL DISCULPAS, resulta que en este caso, no funcionaba porque el administrador del hosting no incluyó como autorizado para usar php a el dominio bajo el cual estaba usando este formulario. Lo probé en otro dominio y funcionó a la perfección, por lo que aquí queda si le sirve a alguien más.
Gracias solisarg por tu dedicación.

Por CRD

80 de clabLevel



Genero:Masculino  

Diseño Filete Ilustración

msie8

 

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