Comunidad de diseño web y desarrollo en internet online

Login para varios usuarios!

Citar            
MensajeEscrito el 11 Feb 2009 07:39 pm
Hola gente, una vez mas pidiendo una mano!
Hace algun tiempo puse aqui un post pidiendo ayuda acerca de como hacer una autenticacion de usuario en Flash con PHP y MySQL pero hasta hoy, nada de dada, asi que revolviendo y sacandome los pelos logre hacerlo de la menera que yo queria (y sin ayuda) HA!
Disculpen pero es que me siento realizado!
Ahora me gustaria saber como logro que cuando un usuario haga LOGIN, si todo marcha bien con la autenticacion en la base de datos envie a mi usuario a el area que le corresponde, porque hasta ahora logro que todas las personas que logran logearse ingresen en el mismo frame de mi pelicula y no es lo que quiero.
Todos los usuarios no tendran su propia area sino que habran 4 areas diferentes en 4 frames diferentes y para diferenciarlos cree un campo extra en mi base de datos dentro de la fila de cada usuario que se llama user_type en la que ingreso de que tipo es, si 1, 2, 3 o 4, lo que no se es como decirle a flash que segun el nombre de usuario que ingrese la persona lo envie al frame correspondinte segun su user_type.
No me queda muy claro si lo tengo que declarar en PHP o en el mismo Flash.
Bueno a quien le interese orientarme se le agradece y si necesitan que postee mi codigo, con mucho gusto, solo pidanlo!
Gracias!!

PD: Estoy haciendo un tutorial para explicar lo que he logrado hasta ahora para postearlo aqui mismo, y todo funciona!!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 02:10 am
hola

Tendras q enviarle desde php el user_type del usuario q se logue.... y en flash verificar q tipo es y redireccionar al frame que corresponda.

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 12 Feb 2009 05:27 am
Si haces login de usuario entonces sabes como retornar variables de PHP a la pelìcula en flash, Cuando hagas login del usuario obten de su registro el campo "user_type".y lo retornas, luego con ese valor puedes hacer lo que quieras puedes utilizar if o un switch, ejemplo:

Código ActionScript :

valor = "valor que retornas del PHP"
switch(valor)
{
case 1: trace("ir al frame 2")
        break
case 1: trace("ir al frame 3")
        break
case 1: trace("ir al frame 4")
        break
case 1: trace("ir al frame 5")
        break
default: trace("Tipo de usuario no válido")
         break
}

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 01:50 pm
Muchas gracias a los 2!!
Voy a intentar eso, ahora, en switch, cada CASE no deveria de ser con diferente #?, algo como:
case 1
case 2
case 3
Gracias!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 02:09 pm

segomel escribió:

Muchas gracias a los 2!!
Voy a intentar eso, ahora, en switch, cada CASE no deveria de ser con diferente #?, algo como:
case 1
case 2
case 3
Gracias!

Si, deberían de ser asi los case me equivoque al colocarlos,

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 02:23 pm
me darias un ejemplo con IF?
Gracias!!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 02:29 pm
Por si te sirve, este el codigo de mi boton

Código :

on (release) 
{
   if(userName.length > 0 && userPassword.length > 0)
   {
      myVars = new LoadVars();
      myVars.username = userName.text
      myVars.pass = userPassword.text
      myVars.action = 'login';
      myVars.sendAndLoad(php_file, myVars, 'POST');
      myVars.onLoad = function()
      {
         if(!this.error && this.user > 0)
         {
            _root.gotoAndStop('registered');
         } else {
            errorMsg.text = "Username or Password incorrect!";
         }
         userName.selectable = true;
         userPassword.selectable = true;
         loginButton.enabled = true;
      }
      userName.selectable = false;
      userPassword.selectable = false;
      loginButton.enabled = false;
   }
}

Ahi solo estoy enviando y recibiendo las Vars del username y Pass, por ahora.

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 02:35 pm
y este es mi PHP ya con la Variable (userType) agregada, mi problema es como hacerlo en flash.

Código :

<?
require_once('functions.php');
require_once('conecta.php');
// ---
// login, check user
// ---
function login($username,$pass,$type)
{
   GLOBAL $db,$table;
   $username = trim($username);
   $pass = trim($pass);
   $type = trim($type);
   $query = mysql_query("SELECT * FROM $table WHERE userName = '$username' AND userPassword = '$pass' AND userType = '$type'");
   return mysql_num_rows($query);
}

// ---
// decisional switch
// ---
if(isset($HTTP_POST_VARS["action"]))
{
   switch($HTTP_POST_VARS["action"])
   {
      case "login":
         $result = login($HTTP_POST_VARS['username'],$HTTP_POST_VARS['pass'],$HTTP_POST_VARS['type']);
         print "user=" . $result;
         break;
   }
}
?>

Creo haber agregado userType correctamente :?
Gracias de nuevo! :wink:

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 02:56 pm
El código del boton puede quedar algo como:

Código ActionScript :

on (release) 
{
   if(userName.length > 0 && userPassword.length > 0)
   {
      myVars = new LoadVars();
      myVars.username = userName.text
      myVars.pass = userPassword.text
      myVars.action = 'login';
      myVars.sendAndLoad(php_file, myVars, 'POST');
      myVars.onLoad = function()
      {
         if(!this.error && this.user > 0)
         {
         // la variable this.user_type contiene el tipo de usuario que es retornado del PHP
         switch(this.user_type)
         {
            case 1: _root.gotoAndStop('registered1');
                  break
            case 2: _root.gotoAndStop('registered2');
                  break
            case 3: _root.gotoAndStop('registered3');
                  break
            case 4: _root.gotoAndStop('registered4');
                  break
            default: break
         }
         } else {
            errorMsg.text = "Username or Password incorrect!";
         }
         userName.selectable = true;
         userPassword.selectable = true;
         loginButton.enabled = true;
      }
      userName.selectable = false;
      userPassword.selectable = false;
      loginButton.enabled = false;
   }
}

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 02:58 pm
Dejame tratar y te cuento psycho-vnz.
Muchas gracias por tu ayuda!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 03:21 pm
No, ahora solo me devuelve el mensaje (errorMsg.text = "Username or Password incorrect!";) todo el tiempo y nada mas.
En mi tabla MySQL le agregue un campo llamado userType y le puse manualmente a en ese campo de dos diferentes usuarios que tengo el valor 1 al primero y 2 al segundo.
Ahora en que momento Flash compara esos valores?
Case 1 deberia validar si el usuario coloca bien su login info y si tiene tipo 1 en el campo, cierto?, y asi lo enviaria al frame etiquetado (registered1).
O tal vez entendi mal?
Gracias!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 05:32 pm
Si puedes mira mi PHP, que esta mal arriba y dime si esta correcto.
Tal vez este ahi mi error, ya no se, toda la mañana con lo mismo y no logro darme cuenta donde tengo el error!!
Me siento frustrado, ha!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 05:56 pm
Que imprime tu archivo PHP en la línea donde tienes

Código :

print "user=" . $result;


Si quieres cargar los datos de PHP en el fla puedes hacerlo imprimiendo los valores de la siguiente manera

Código :

$resultado = mysql_query($sql, $conn_db);
$registro = mysql_fetch_assoc($resultado);
$total = mysql_num_rows($resultado);
echo "user=".$registro['id']."&user_type=".$registro['user_type'];

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 07:00 pm
Mi PHP imprime el userName y el userPassword en esa linea, lo que pasa es que con

Código :

print "user=" . $result;

los imprime juntos y por eso en Flash los valida juntos tambien, donde dice

Código :

if(!this.error && this.user > 0)

pero de la manera que tu dices, tendria que cambiar algo de lo que explicas antes en el flash?, y como iria ese codigo dentro de mi PHP?
Ten en ceunta que en ningun momento le pregunto al usuario su (userType) en el area de login, solo su userName y userPassword.
Gracias amigo!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 07:24 pm
El "user_type" lo deberías de tener ya almacenado en el registro de cada usuario, desde que se registro cuando lo hayan creado.

Para que no tengas que modificar tu código anterior de tu PHP, en la parte que imprime el userName y el userPassword agregale el "user_type" y listo! deberías de poder verlo en el flash.

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 07:36 pm
Si, el rpoblema con agregarlo dentro del

Código :

"user="

es que cuando flash intente validar la coincidencia con

Código :

this.user

buscara que tambien coincida el userType y realmente no hay con que compararlo ya que el usuario no tiene ese campo en el area de login.
Casi seguro que tengo la tesis equivocada en mi cabeza, pero no se me aclara, y eso que tengo las mejores intenciones.
HA!!
Gracias!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 07:57 pm
Aqui estan mis usuarios registrados en MySQL:



yo mismo les puse su # en el campo userType, use solo 1 y 2 para probar.

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 08:04 pm
Concatena los valores como te dije mas arriba

psycho-vnz escribió:


Código :

echo "user=".$registro['id']."&user_type=".$registro['user_type'];


Si lo quieres usar con print:

Código :

print "user=" . $result . "&user_type=" . $registro['user_type']


Y preguntas por la variable "user_type" en el flash. Una pregunta: ¿Tienes los datos de login separados de la data del usuarios? :? , si es así tendrás buscar el tipo de usuario en otra tabla al momento de hacer login, osea tendrás que hacer un segundo query.

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 08:06 pm

segomel escribió:

Aqui estan mis usuarios registrados en MySQL:



yo mismo les puse su # en el campo userType, use solo 1 y 2 para probar.


Ok ,esta el tipo de usuario con el tipo de usuario, prueba con el print que te coloque en el post anterior.

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 08:12 pm
No, no, ese registro que ves arriba es lo unico que tengo del usuario, solo esa tabla!
Los datos personales los recolectamos por medio de un formulario separado de todo este tema del login ya que cada usuario debe ser evaluado y aprobado antes de otorgarle un userName y userPassword, y los registros se archivan en papel.
Ok, dejame ver si sale con eso que dices y te digo, esto se pone bueno, ganaremos esta guerra juntos!! haha!!
Gracias!!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 08:41 pm
No, funciono! :cry: a este punto ya estoy un poco perdido :( y la verdad es que no te quiero pedir ayuda por fuera porque de esa manera los demas no aprenderian, si es que lo resolvemos, :? claro esta.
PD: Te agregue en mis contactos de Google Talk porque estaba mirando en tu Blog y vi que tenemos algunas cosas en comun como por ejemplo (Counter Strike) y otras, y me gustaria poder hablar alguna vez.
De todas maneras gracias, voy a seguir tratando, no me rindo tan facilmente!!
Ha!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 08:53 pm
Tienes algun URL en donde pueda ver el PHP funcionando? para ver como retorna los valores?

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Feb 2009 08:58 pm

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 12 Feb 2009 09:02 pm
Disculpa, hablas del link donde estoy probando mi login?
si es asi, ya sabes con que usuarios y contraseñas probar.

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 13 Feb 2009 01:49 pm
psycho-vnz, NO me abandones!!
Hahaha!

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 13 Feb 2009 02:05 pm
Aqui te dejo un ejemplo sencillo de como puedes cargar data de un php en flash, pruebalo y luego le agregas tu código

Actionscript:

Código ActionScript :

on (release)  
{
    var php_file = "http://192.168.111.30/test/clab.php"
      myVars = new LoadVars(); 
      myVars.username = "psycho"
      myVars.pass = "password"
      myVars.action = 'login'; 
      myVars.sendAndLoad(php_file, myVars, 'POST'); 
      myVars.onLoad = function() 
      { 
         if(!this.error && this.user > 0) 
         {
       trace("this.user: " + this.user)
       trace("this.user_type: " + this.user_type)
      }
   } 
} 


PHP:

Código PHP :

<?php
if(isset($_POST['username']) && isset($_POST['pass']))
{
   $user = 1;
   $user_type = 4;
   echo "user=".$user."&user_type=".$user_type;
}
?>

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Feb 2009 02:52 pm
pero con estos codigos no estas usando base de datos, o si?

Por segomel

70 de clabLevel



 

2006

chrome
Citar            
MensajeEscrito el 13 Feb 2009 02:54 pm
No!, solo es un ejemplo para que lo pruebes y luego tomas las partes que te sirvan para tu código.

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Feb 2009 03:35 pm
Revisando el código que me enviaste note unas cosas que estabas retornando mal al swf.

En la función login() del PHP estabas retornando el total de usuarios encontrados con el uso de la función mysql_num_rows($query), en vez de retornar los campos del usuario logueado.

En el siguiente ejemplo veras que utilice la función mysql_num_rows($query) para saber si encontró algún registro, si lo encontró entonces tomo los campos retornados por el query.

En caso contrario retorno 0 para el id de usuario indicando que no se encontró algún usuario.

El código completo de la función seria:

Código PHP :

<?php
function login($username,$pass)
{
   GLOBAL $db,$table;
   $username = trim($username);
   $pass = trim($pass);
   $query = mysql_query("SELECT * FROM $table WHERE userName = '$username' AND userPassword = '$pass'");
   if(mysql_num_rows($query) > 0)
   {
      $registro = mysql_fetch_assoc($query);
      $usuario = 'id='.$registro['userID'].'&user='.$registro['userName'].'&tipo='.$registro['user_type'];
      return $usuario;
   }
   else
   {
      $usuario = 'id=0';
   }
}
?>


En el código del botón en el fla estaba bien, el único problema que note es que te faltaba un paréntesis xD, del resto estaba bien.

Lo que hice fue agregar código luego del if en donde preguntas si el usuario(variable user) es mayor a 0

Código ActionScript :

on (release) 
{
   if(userName.length > 0 && userPassword.length > 0)
   {
      myVars = new LoadVars();
      myVars.username = userName.text
      myVars.pass = userPassword.text
      myVars.action = 'login';
      myVars.sendAndLoad(php_file, myVars, 'POST');
      myVars.onLoad = function()
      {
         if((!this.error && this.id > 0)){
            switch(parseInt(this.tipo))
            {
               case 1: trace("Usuario tipo 1");
                     break;
               case 2: trace("Usuario tipo 2");
                     break;
               case 3: trace("Usuario tipo 3");
                     break;
               case 4: trace("Usuario tipo 4");
                     break;
               default: trace("Tipo de usuario no valido");
                     break;
            }
         }
         else {
            errorMsg.text = "Username or Password incorrect!";
         }
         userName.selectable = true;
         userPassword.selectable = true;
         loginButton.enabled = true;
      }
      userName.selectable = false;
      userPassword.selectable = false;
      loginButton.enabled = false;
   }
}

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Feb 2009 05:19 pm
De esa forma me sigue dando el mismo mensaje:

Código :

errorMsg.text = "Username or Password incorrect!"; 

Gracias igual!

Por segomel

70 de clabLevel



 

2006

chrome

 

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