Foros del Web » Creando para Internet » Flash y Actionscript »

Problema con flash - php

Estas en el tema de Problema con flash - php en el foro de Flash y Actionscript en Foros del Web. Hola a todos, tengo el siguiente problema y que me ha quemado horas buscando el porque no funciona el retorno de la variable. Codigo flash: ...
  #1 (permalink)  
Antiguo 09/08/2006, 22:05
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 20 años, 3 meses
Puntos: 1
Pregunta Problema con flash - php

Hola a todos, tengo el siguiente problema y que me ha quemado horas buscando el porque no funciona el retorno de la variable.

Codigo flash:

enviar = function () {
if (user_txt.text.length && pwd_txt.length )
{
form_lv = new LoadVars();
form_lv.user = user_txt.text;
form_lv.pwd = pwd_txt.text;

form_lv.sendAndLoad("verifuser.php", form_lv, "POST");
mensaje_txt.text = "Enviando Datos..";
user_txt.text = "";
pwd_txt.text = "";

form_lv.onLoad = function(success) {
trace("LLEGO ->"+this.estatus);
if (this.estatus == "ok") {
mensaje_txt.text = "USUARIO VALIDO...";
user_txt.text = "";
pwd_txt.text = "";

} else {
mensaje_txt.text = "Usuario No Válido";
}
};

} else {
mensaje_txt.text = "Debe Ingresar Usuario y Password.";


}
};
borrar = function () {
user_txt.text = "";
pwd_txt.text = "";
};
enviar_btn.onRelease = enviar;
borrar_btn.onRelease = borrar;
stop();


Codigo PHP:

<?php

$user = $_POST['user'];
$pwd = $_POST['pwd'];


include("cgi-bin/proxy.php");
$objProxy=new proxy();

$sql="Select USU_Nivel";
$sql.=" from usuarios ";
$sql.=" WHERE USU_UserName = '".$user."' AND USU_Pwd = '".$pwd."'";

$resultset=$objProxy->consultar($sql);

if (mssql_num_rows($resultset)>0) {


echo '&estatus='.$user.'&';

}else{
echo '&estatus='.$user.'&';
}
?>

Estoy tratando de hacer la prueba de transferencia de datos entre flash y php para ver si funciona. El sendAndLoad se comunica con el PHP, pero no devuelve bien la variable $user, para visualizar el valor retornado uso el
trace("LLEGO ->"+this.estatus); y lo que veo en la ventana es LLEGO -> $user y no la variable que escribí en el campo de texto en el flash.

El php funciona bien cuando lo pruebo en forma independiente.
Me da la impresión de que el php no está recibiendo el $user = $_POST['user'];
que se envía por sendAndLoad.

De ante manos agradezco su colaboración.

Última edición por ciberpato; 09/08/2006 a las 23:18
  #2 (permalink)  
Antiguo 10/08/2006, 02:12
 
Fecha de Ingreso: agosto-2006
Mensajes: 2
Antigüedad: 18 años, 3 meses
Puntos: 0
pq en flash estàs esperando que la variable estatus sea igual a "OK" y en php la variable estatus toma el valor de user
  #3 (permalink)  
Antiguo 10/08/2006, 08:11
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 20 años, 3 meses
Puntos: 1
Gracias por contestar jaime51, pero el problema es otro .. si el flash envía el usuario y la pwd mediante sendAndLoad al php que recibe estas variable y se recuperan con;
$user = $_POST['user'];
$pwd = $_POST['pwd'];

luego lo que estoy haciendo es aprobechar la variable estatus para ver si el php fue capaz de recibir ... por ejemplo 'user'... porque parece que no funciona... Ya que en flahs escribí por ejemplo pato y el valor devuelto me da $user y no pato.... no se si me explico. Yo necesito ver si el $user = $_POST['user']; está funcionanado .... como lo hago??...por eso puse
antes del if(estatus==ok) { el trace..

trace("LLEGO ->"+this.estatus);
el estatus debería mostrarme el valor 'pato'.
  #4 (permalink)  
Antiguo 10/08/2006, 19:54
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Veo muchos "cosas extrañas", intentaré exponer lo que creo que podría ser la solución:

1.-

$user = $_POST['user'];
$pwd = $_POST['pwd'];

Si estás almacenando en esas variables lo que envías desde Flash, tiene que ser:

$user = $_GET['user'];
$pwd = $_GET['pwd'];

Ahí se supone que desde Flash estás enviando 2 variables: user y pwd que estás almacenando en $user y $pass respectivamente.

2.-

Deberías tener 2 objetos LoadVars, uno para enviar y el otro para recibir.

enviar.sendAndLoad("verifuser.php?user=valor1&pwd= valor2", recibir);

Así le pasas las variables al PHP, este las procesa y después con el evento onLoad haces lo que quieras. En el objeto recibir está lo que devuelve el PHP, desde ahí podrás ocupar las distintas variables que retornó el PHP.

Es mucho a considerar, ojalá sirva de guía.
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #5 (permalink)  
Antiguo 11/08/2006, 01:41
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Me corrijo a mí mismo:

No consideres lo planteado en el topic anterior, no es necesario hacer eso. Te dejo la dirección de una excelente página que explica en detalle lo que quieres.

http://www.cristalab.com/tutoriales/...bases-de-datos
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #6 (permalink)  
Antiguo 12/08/2006, 14:42
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 20 años, 3 meses
Puntos: 1
Sigo con el problema y no logro entender el porque no me devuelve el valor que asume la variable en el php voy a simplificar el script a ver si alguien me puede indicar donde esta el problema.

Codigo flash:

enviar = function () {

if (user_txt.text.length )
{
form_lv = new LoadVars();
form_rv = new LoadVars();
form_lv.user = user_txt.text;
trace(form_lv.user_txt);

form_lv.sendAndLoad("../verifuser.php", form_rv, "POST");

form_rv.onLoad = function(success) {
trace("LLEGO->"+this.estatus);

};

} else {
mensaje_txt.text = "Debe Ingresar Usuario y Password.";


}
};
borrar = function () {
user_txt.text = "";

};
enviar_btn.onRelease = enviar;
borrar_btn.onRelease = borrar;
stop();

Codigo PHP:

$user = $_POST['user'];

echo '&estatus='.$user."&";

Lo que quiero comprobar con lo anterior que el valor de la variable form_lv.user enviado por el flash al php lo vea devuelta en el mismo, de esa manera podré saber que está funcionando. Ya que así como está el valor devuelto no es el valor de la variable si no $user como un string. Osea desde flash envío user_txt="pato" me responda con pato y no con $user cuando este debería asumir el valor que recibe via POST... no se si me logro explicar
  #7 (permalink)  
Antiguo 12/08/2006, 17:08
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
No veo errores en la sintaxis empleada, más bien en el echo del PHP. Prueba en la línea del PHP cambiando:

Código:
echo '&estatus='.$user."&";
por

Código:
//acá no pasamos como ANSII sino como UNICODE
echo utf8_encode("&resultado=$estatus&");
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #8 (permalink)  
Antiguo 13/08/2006, 21:30
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 20 años, 3 meses
Puntos: 1
goc00, todavía estoy sin encontrar una solución.... no será la forma en que estoy probando el envío y la recepción del dato. Para la prueba entre flash y php uso el probar película desde el menú de control, a lo mejor estoy cometiendo un error el la prueba, dime como pruebas tu este ejemplo. Lo triste de todo esto goc00 es la poca colaboración del equipo del foro y realmente te agradezco el esfuerzo que haces por ayudarme a salir de este dilema ... a lo mejor todo esta bien y solo es la forma en que lo estoy probando.... una vez mas gracias
  #9 (permalink)  
Antiguo 14/08/2006, 03:37
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Si estás utilizando el "probar película", hay que pasarle TODA LA URL.
Un mini ejemplo de como lo haría yo:

1.- Nombre de instancia TextField: caja
2.- Utilizaré un botón que haga todo (esto se puede adaptar fácilmente a una función):

Código:
on (press) {
  //guardo lo que hay en la caja de texto
  miTexto=caja.text;

  //creo 2 objetos del LoadVars para enviar y recibir información
  envia = new LoadVars();
  recibe = new LoadVars();

  //acá declaramos la variable que le pasaremos al PHP
  //y le pasamos como valor la variable miTexto
  envia.meEnvian = miTexto;

  //tienes que estar probando en localhost
  //RECUERDA PASARLE LA URL ENTERA, NO UN URL RELATIVA
  envia.sendAndLoad("http://localhost/pagina.php", recibe, "POST");

  //llamamos al evento onLoad
  recibe.onLoad = function(success) {
   if(success) {
      trace("FUNCIONÓ Y RETORNÓ ->"+this.resultado);
   } else {
      trace("NO PASÓ NADA");
   }
  };
}
Y ahora en el PHP:

Código:
<?php
  $resultado = _POST['meEnvian'];
  echo utf8_encode("&resultado=$resultado&");
?>
¡Esto si que funciona!, veamos que tal te va
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #10 (permalink)  
Antiguo 14/08/2006, 08:54
Avatar de ciberpato  
Fecha de Ingreso: agosto-2004
Mensajes: 142
Antigüedad: 20 años, 3 meses
Puntos: 1
Bingoooooo....goc00, diste en el clavo el problema era que no le pasaba la URL completa, solo cambié la URL relativa por la ENTERA y funcionó perfecto. Una vez mas te agradezco, has sido de gran ayuda ... hasta la próxima. Cordiales saludos
  #11 (permalink)  
Antiguo 14/08/2006, 14:31
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 10 meses
Puntos: 3
Para eso estamos
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:06.