Comunidad de diseño web y desarrollo en internet online

Las variables de Flash no pasan a PHP

Citar            
MensajeEscrito el 09 Nov 2007 09:48 pm
Estimados:
Antes de preguntar aquí, hemos estado tratando de solucionar mi problema, en otro foro, pero no he logrado solucionarlo. Por alguna razón, que desconozco un archivo SWF no puede pasarle las variables a un archivo PHP.

Lo que debe hacer el archivo SWF es recibir los valores de las variables ingresadas por el usuario y pasarselas a PHP, para que este inserte los datos en MySQL.

Después de realizar varias pruebas, concluimos, que los archivos SWF y PHP, están bien, son correctos, funcionan correctamente, pero las variables no le llegan al archivo PHP.

Tengo instalado WAMP5 1.7.3 y Flash MX 2004 Professional.
PHP funciona bien, MySQL también.
Si es necesario que les agregue los archivos SWF y PHP, lo hago.

Quizá, en este foro, alguien tenga alguna idea de que puede ser.
Les agradezco, pues estoy estudiando y este tema me trancó pues no puedo seguir adelante si esto no funciona.
Gracias.

Por calmas

9 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 10 Nov 2007 03:11 am
Si puedes postear el código que usas para enviar los datos y el que hace la recepción en PHP (no hace falta que lo pongas todo, sólo el que está directamente relacionado con el procedimiento) es mucho más fácil ayudarte. De todas maneras, te sugiero que comiences revisando minuciosamente nombres de variables, nombres del instancia, etc., Si el problema no es de código es posible que esté en los nombres.
P.D.: Cuando vayas a postear código, hazlo entre las etiquetas [*code] [*/code] (sin los asteriscos).

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 10 Nov 2007 02:57 pm
Bueno, primero que nada, gracias por responder, estimado.

Estoy pegando primero el código AS, en la línea de tiempo:

Código :

function enviarRegistro():Void {
   if (nombre.length<=2) {
      n1.textColor = 0xff0066;
      Selection.setFocus(c1);
      alarma = "Completar campo nombre";
   } else if (apellido.length<=2) {
      n2.textColor = 0xff0066;
      Selection.setFocus(c2);
      alarma = "Completar campo apellido";
   } else if (email == undefined || email.indexOf("@")<1 || email.indexOf(".",-1)<3) {
      n3.textColor = 0xff0066;
      Selection.setFocus(c3);
      alarma = "Completar campo e-mail";
   } else if (user.length<=2) {
      n4.textColor = 0xff0066;
      Selection.setFocus(c4);
      alarma = "Completar campo user";
   } else if (pass.length<=2) {
      n5.textColor = 0xff0066;
      Selection.setFocus(c5);
      alarma = "Completar campo pass";
   } else {
      var enviarInfo:LoadVars = new LoadVars();
      var recibirRtta:LoadVars = new LoadVars();
      enviarInfo.elNombre = nombre;
      enviarInfo.elApellido = apellido;
      enviarInfo.elEmail = email;
      enviarInfo.elUser = user;
      enviarInfo.elPass = pass;
      enviarInfo.sendAndLoad("alta.php", recibirRtta, "POST");
      trace("nombre: " + enviarInfo.elNombre);
      trace("apellido: " + enviarInfo.elApellido);
      trace("email: " + enviarInfo.elEmail);
      trace("usuario: " + enviarInfo.elUser);
      trace("pasword: " + enviarInfo.elPass);
      recibirRtta.onLoad = function () {
         alarma = this.respuesta;
         if (alarma == "Gracias por registrarte!!") {
            play();
         }
      };
   }
};


Luego por supuesto el código del botón que llama a la función:

Código :

on (release) {
   enviarRegistro();
}


Y el archivo PHP, de nombre "alta.php":

Código :

<?php
require("conect.php");
$elNombre=$_POST[elNombre]; 
$elApellido=$_POST[elApellido]; 
$elEmail=$_POST[elEmail];
$elUer=$_POST[elUser]; 
$elPass=$_POST[elPass]; 

$consulta = mysql_query("INSERT INTO `registro` ( `id`, `nombre`, `apellido`, `email`, `user`, `pass` ) VALUES ('', '$elNombre', '$elApellido', '$elEmail', '$elUser', '$elPass');");
   if($guardar == mysql_query("$consulta"))
   {
      echo "&respuesta=Gracias por registrarte!!";
   }else{
      echo "&respuesta=error";
   }
?>


Te cuento que hemos probado ambos códigos y funcionan, como verás el código AS tiene un TRACE para cada variable, el panel de Salida, muestra correctamente los valores de cada variable.
En el archivo PHP, si en lugar de por ejemplo -$elNombre=$_POST[elNombre]; - le asigno -$elNombre="fulano"; - y del mismo modo con cada variable, ejecuto el PHP e inserta correctamente el registro en la base de datos. Por estos motivos es que creemos que ambos archivos funcionan correctamente. Y no encontramos una explicación al problema.

Hemos probado también cambiar el $_POST, por $HTTP_POST_VARS.
Dentro de los [ ], agregar ' ', o " " y hasta ` `. Pero nada dió resultado.

Me pasaron otro archivo PHP, a los que simplemente cambié los nombres de las variables, tampoco.

Por último, y ya agrego hasta lo más tonto, por las dudas:
Por ejemplo el campo de introducción de texto, donde se introduce el nombre, tiene como nombre de instancia "c1" y como variable "nombre" (sin las comillas por supuesto).
La base de datos se llama "libro_webmail" y el nombre de la tabla: "registro", los nombres de los campos son: id, nombre, apellido, email, user, pass.
El campo "id", es autoincrementable.

Quizá deberíamos empezar a pensar en un problema de configuración, algun archivo .dll o .ini que falte y que a ud. se les ocurra.

De cualquier manera agradezco cualquier comentario.
Saludos

Por calmas

9 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 10 Nov 2007 05:07 pm
Ok, el código AS parece estar bien, aunque yo no me fío mucho de las variables asociadas a campos de texto. Haz estas pruebas para descartar:

  1. Reemplaza las variables con las que pasas los datos al LoadVars por la propiedad text de cada cuadro de texto. Es decir, donde colocas:

    Código :

    enviarInfo.elNombre = nombre;
    

    cámbialo por:

    Código :

    enviarInfo.elNombre = c1.text;
    

  2. Si no funciona, coloca valores de prueba directamente en el loadVars:

    Código :

    enviarInfo.elNombre = "Fulanito";
    


Por otro lado, cuando envías las variables desde el php estás usando la notación de variables de PHP, así que Flash lo interpretará mal. Cambia:

Código :

if($guardar == mysql_query("$consulta"))
   {
      echo "&respuesta=Gracias por registrarte!!";
   }else{
      echo "&respuesta=error";
   }

por

Código :

if($guardar == mysql_query("$consulta"))
   {
      echo "respuesta=Gracias por registrarte!!";
   }else{
      echo "respuesta=error";
   }

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 10 Nov 2007 11:03 pm
Ok, voy a probar lo de "c1.text".

Lo de "enviarInfo.elNombre = "Fulanito";"... ya lo probé, también, y no funcionó.
Luego te cuento como me fue.

Por calmas

9 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 10 Nov 2007 11:47 pm
Bueno no.
Negativo, no funciona.
Las variables reciben el valor correctamente en Flash, pero no hace el registro en la BD.

Se me ocurre también, y creanme que no me estoy quedando a ver si alguien me soluciona el tema, quizá hay alguno de los settings, de PHP que tenga que estar activado y yo no lo tengo.
La verdad es que no tengo idea que hace cada uno de ellos.

Les cuento algo que me pasó cuando estaba instalando el WAMP:
Luego de instalarlo, hago la famosa prueba:

Código :

<?
phpinfo();
?>


Y el explorer quedaba en blanco, por lo que decido desinstalar WAMP e instalar EASYPHP, tampoco funciona, por lo que lo desinstalo también y me dicen que, en el código de la prueba, luego de <? agregue PHP.
Instalo nuevamente el WAMP, corrijo el código y solucionado el problema.
Pregunto: ¿esto puede ser la causa del problema?.
Con lo cual si fuera, debería desinstalar WAMP, y borrar todos los registros de WAMP e EASYPHP, para dejar todo limpio. Ahora ¿que registros tengo que buscar de los 2 instaladores?

Quizá la pregunta no sea para este foro, pero bueno, no se si los moderadores la pueden cambiar.
Gracias.

Por calmas

9 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 08 Ene 2008 12:44 pm
Saludos, mi nivel es principiante, sin embargo tenía el mismo problema que aquí se plantea y lo he solucionado gracias al código que he robado del creador del post:

Código :

$elNombre=$_POST[elNombre]; 


lo que yo directamente utilizaba la variable pasada del swf al php, es decir asi en php:

Código :

$variable_del_swf


he de decir que no siempre me funcionaba y con el código sacado de aquí sin problemas, por eso doy las gracias a calmas que indirectamente me echo un cable.

Por otra parte, por mis pruebas digo que no es asi:

Código :

if($guardar == mysql_query("$consulta"))

   {

      echo "&respuesta=Gracias por registrarte!!";

   }else{

      echo "&respuesta=error";

   }


ni asi:


Código :

if($guardar == mysql_query("$consulta"))

   {

      echo "respuesta=Gracias por registrarte!!";

   }else{

      echo "respuesta=error";

   }


sino asi:

Código :

if($guardar == mysql_query("$consulta"))

   {

      echo "&respuesta=Gracias por registrarte!!&";

   }else{

      echo "&respuesta=error&";

   }


ya que flash detecta una variable externa cuando delante tiene "&", sin embargo hasta que no se encuentra con otra "&" para flash no se ha cerrado el valor de la variable. Por tanto:

Código :

echo "&respuesta=Gracias por registrarte!!";


lo interpreta como:

respuesta=Gracias por registrarte!!"

ya que hasta que no llega al ";" para flash no se cerró la variable.

Sin embargo nada de esto soluciona la pega de calmas, sigue buscando, mis pruebas me han demostrado que un código que comunica en un servidor no tiene porque hacerlo en otro.

Por Rule

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Ene 2008 09:34 pm
Gracias por interesarse nuevamente.
El error sigue persistiendo, he vuelto a estudiar más atrás para tratar de solucionar el tema.
En particular creo que el problema se debe a un tema de configuración de mi maquina.
Estoy a punto de probar el tema en un servidor NO local que acepte PHP y MySQL.

Hago un par de preguntas al pasar:
Flash remoting tiene algo que ver con este tema?, y si no es así para que sirve?
Saludos
Calmas

Por calmas

9 de clabLevel



Genero:Masculino  

msie7

 

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