Comunidad de diseño web y desarrollo en internet online

Sesiones en Flash Remoting, PHP y AMFPHP

Citar            
MensajeEscrito el 15 Jun 2007 06:09 pm
Hola, alguien podria ayudarme ando buscando un archivo que tenian en el foto
www.minerometall.conc.es/fecsaendesa/img/flash/sesiones.zip
la verdad veo el tutorial y creo q le falta mas explicaciones.... si pueden ayudarme se los agredeceria mucho....

Código :

import mx.rpc.ResultEvent; 
import User; //Importamos la Clase: User.as 
import Session; //Importamos la Clase: Session.as 
   
var ssid:String; //Esta variable contendrá el id de session var 
var svSess:Session = new Session(); //Instanciamos el objeto session 
var svUser:User = new User(); //y el objeto usuario 
   
//CREAREMOS UN MANEJADOR PARA EL LOGIN 
//Y LO REGISTRAMOS EN EL OBJETO USUARIO 
svUser.onLoGin = function (msg:ResultEvent) 
{ 
   lnmsg.text=""; 
   switch(msg.result) 
   { 
      case 0: //No existe el usuario 
         pass.text = ""; 
         gotoAndStop("registro"); 
         break;    
      case 1: //Login correcto 
         gotoAndStop("wellcome"); 
         break; 
      case 2: //Password invalida 
         pass.text = ""; 
         lnmsg.text = "Password Incorrecta."; 
         break; 
      } 
   }; 
   
//CREAREMOS UN MANEJADOR PARA EL REGISTRO 
//Y LO REGISTRAMOS EN EL OBJETO USUARIO 
svUser.onRegUser = function (msg:ResultEvent) 
{ 
   lnmsg.text=""; 
   switch(msg.result) 
   { 
      case 0: //No existe el usuario 
   lnmsg.text="Error de Escritura."; 
         break; 
      case 1: //Login correcto 
         gotoAndStop("wellcome"); 
         break; 
      case 2: //Password invalida 
         user.text = ""; 
         pass.text = ""; 
         lnmsg.text = "El usuario ya existe."; 
         break; 
         } 
   }; 
 
//CREAREMOS UN MANEJADOR PARA EL LOGOUT 
//Y LO REGISTRAMOS EN EL OBJETO USUARIO 
svUser.onLoGout = function (msg:ResultEvent) 
{ 
   if(msg.result) 
      gotoAndStop("login"); 
   };


Cuando Ctl+Enter me aparece

**Error** Escena=Escena 1, capa=Capa 3, fotograma=1:Línea 6: No se pudo cargar la clase o interfaz 'Session'.
var svSess:Session = new Session(); //Instanciamos el objeto session [/code]

Por Israelmx

8 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 15 Jun 2007 06:25 pm
Codigo User.as

Código :

import mx.services.Log; 
import mx.rpc.RelayResponder;  
import mx.rpc.FaultEvent;  
import mx.rpc.ResultEvent; 
import mx.remoting.Service;  
import mx.remoting.PendingCall;  
import mx.remoting.debug.NetDebug; 

class User 
 { 
 //Constantes ------------------------------------------------------ 
 //Tipos de CallBack 
 public static var REGISTER = 0; 
 public static var LOGIN = 1; 
 public static var LOGOUT = 2; 

 //Variables ------------------------------------------------------ 
 public var onRegUser:Function; 
 public var onLoGin:Function; 
 public var onLoGout:Function; 
 private var service:Service; 
 private var loG:Log; 

  //Constructor ---------------------------------------------------- 
 function User() 
 { 
   loG = new Log(Log.DEBUG, "logger"); 
   loG.onLog = function(message:String):Void 
   { 
       trace("AMF --> " + message); 
        } 
   NetDebug.initialize(); 
   service = new Service("http://i-latina.com.mx/remoting/gateway.php", loG, "users", null, null); 
    } 

//Llamadas a las Funciones del Servicio ---------------------------------------------- 

//Llama al servicio regUser de nuestro users.php 
function regUser(user:String, pass:String, email:String):Void 
{ 
   var pc:PendingCall = service.regUser(user, pass, email); 
   pc.responder = new RelayResponder(this, "_onRegUser", "_onAmfError"); 
   } 
//Logea un usuario en el sistema 
function loGin(user:String, pass:String):Void 
{ 
   var pc:PendingCall = service.loGin(user, pass); 
   pc.responder = new RelayResponder(this, "_onLoGin", "_onAmfError"); 
   } 

//Expulsa al usuario 
function loGout():Void 
{ 
   var pc:PendingCall = service.loGout(); 
   pc.responder = new RelayResponder(this, "_onLoGout", "_onAmfError"); 
   } 

//------------------------------------------------------------------ 
//Función de CallBack ------------------------------------------------ 

function callBack (fc:Number, re:ResultEvent):Void 
{ 
   switch(fc) 
   { 
      case REGISTER: 
         if(onRegUser != null) 
            onRegUser(re); 
         else 
         { 
            trace(""); 
            trace("Función 'onRegUser' no declarada"); 
            } 
         break; 

      case LOGIN: 
         if(onLoGin != null) 
            onLoGin(re); 
         else 
         { 
            trace(""); 
            trace("Función 'onLoGin' no declarada"); 
            } 
         break; 

      case LOGOUT: 
         if(onLoGout != null) 
            onLoGout(re); 
         else 
         { 
            trace(""); 
            trace("Función 'onLoGout' no declarada"); 
            } 
         break; 
   } 
} 


//Manejadores de las respuesta de Remoting 
private function _onRegUser(re:ResultEvent):Void 
{ 
   callBack(REGISTER,re); 
   } 

private function _onLoGin(re:ResultEvent):Void 
{ 
   callBack(LOGIN,re); 
   } 

private function _onLoGout(re:ResultEvent):Void 
{ 
   callBack(LOGOUT,re); 
   }


//Manejo de los errores de Remoting 

private function _onAmfError( err:FaultEvent ):Void 
{ 
   NetDebug.trace({level:"None", message:"Error: " + err.fault.faultstring }); 
   } 

} 


Codigo users.php

Código :

<?php  
include ("include/config.php");  
include ("include/tablas.php");  
include ("incl.php");

class users 
  { 

  //Constructor de clase 
  function users() 
  { 
  //Aquí definimos la tabla de metodos exportables a Flash. 
  $this->methodTable = array( 
               "regUser" => array( 
               "description" => "Registra un nuevo usuario", 
               "access" => "remote",    
               "arguments" => array ("user","pass","email") 
                 ), 

               "loGin" => array( 
               "description" => "Logea un usuario", 
               "access" => "remote", 
               "arguments" => array ("user","pass") 
               ), 

               "loGout" => array( 
               "description" => "Cierra la sessión de un usuario", 
               "access" => "remote" 
               ) 

    ); 

   //Conectamos con nuestro servidor de BD, con los datos que tenemos definidos en config.php 
   mysql_connect(DB_SERVER., .DB_SERVER_USERNAME., .DB_SERVER_PASSWORD.); 
   //Seleccionamo la base de datos de trabajo, con el dato definido igualmente en la config.php 
   mysql_select_db(DB_DATABASE); 
} 

//Registra un nuevo usuario en el sistema  
function regUser($user,$pass,$email)  
{ 
   //Codigo de Registro  
   $pass = pass_encript($pass); //Encriptamos el "pass" recibido de Flash  

   //Ahora comprobamos si el nombre de usuario ya existe en la BD,  
   //en caso afirmativo, devolveremos un código de error a Flash informando de,  
   //esta incidencia, ahora bien, si no existe, lo añade sin problemas.  
   if (!$this->extUser($user))  
   { 
      //Con esta instrucción almacenamos en la BD los datos del nuevo usuario, si la función devuelve "true" 
      //significa que la operación de almacenamiento tuvo exito, y por tanto ya se añadió nuestro usuario 
      //en caso contrario, se devuelve a Flash, otro código de error informando de esta incidencia.  
      if(mysql_query("insert into " . TABLA_USERS . " (user,pass,email,alta) values ('".  
                        addslashes($user)."','".addslashes($pass)."','".addslashes($email)."','". 
                      addslashes(date("Ymd"))."')"))
      { 
          //Una vez el usuario ha sido registrado correctamente en la BD, 
         //guardamos en la session el usuario y la password encriptada 
         $_SESSION['ulogged'] = $user;  
         $_SESSION['plogged'] = $pass; 
         $_SESSION['iplogged'] = get_ip(); 
         return 1;//Registro efectuado 
       } 
      else 
          return 0;//Registro fallido 
    } 
   return 2; //Error el usuario ya existe 
}

//Loggea a un usuario en el sistema, autorizandolo. 
 
function loGin($user,$pass)  
{  
   //Codigo de Login  
   //Con esta instrucción consultamos a la BD los datos de que dispone del usuario solicitado  
   $rst = mysql_query("select * from " . TABLA_USERS . " where user='" . addslashes($user) ."'"); 
   //si el recuento de registro es distinto de 0, significa que el usuario existe en la 
   //BD, y aprovechamos la consulta realizada, para obtener sus datos, y autorizarle. 
   if(mysql_num_rows($rst)!=0) 
   { 
      $row = mysql_fetch_array($rst);//Extraemos los datos 
      //Obtenemos la ip real del usuario. 
      $ip = get_ip();  
      ///---- Procedemos a realizar el login con estos datos. 
      //---------------------------------------------------------------  
      //Esta instrucción está declarada en incl.php, y devuelve "true" si el password pasado es válido.  
      if(pass_validate($pass,$row['pass']))//Validamos el password 
      {  
         //Si Flash nos pasó un password en texto plano "CORRECTO", pues  
         //damos por bueno el login, e informamos a Flash de ello, para que obre en consecuencia :) 
       $_SESSION['ulogged'] = $user; //Salvamos en la sesion el usuario 
       $_SESSION['plogged'] = $row['pass']; //la pass encriptada 
       $_SESSION['iplogged'] = $ip;// y la IP del cliente. 
       return 1; //login correcto  
         }  
      else  
         return 2; //password incorrecto  
   }  
   else  
      return 0; //El usuario no existe  
}


//Expulsa del sistema al usuario 
function loGout() 
{ 
   session_destroy(); //Destruimos la sessión. 
   return true; 
   } 

//Esta es una función de uso interno, no se publica hacia Flash, es simplemente para saber si un usuario 
//ya existe en la BD. 
function extUser($user) 
{ 
   return intval(mysql_result(mysql_query("select count(*) as existe from " 
               . TABLA_USERS . " where user='" 
               . addslashes($user) ."'"),0,"existe")); 
   } 
} 


Codigo config.php

Código :

<?php 
 define('DB_SERVER', 'localhost'); 
 define('DB_SERVER_USERNAME', 'ilatina'); 
 define('DB_SERVER_PASSWORD', 'xxxxx'); 
 define('DB_DATABASE', 'sabila'); 
 ?> 


Codigo incl.php

Código :


<?php  
// Valida el contenido de una variable 
 
function not_null($vAL)  
{  
   if (is_array($vAL))  
   {  
      if (sizeof($vAL) > 0)  
         return true;  
      else  
         return false;  
   }  
else  
   {  
      if (($vAL != '') && (strtolower($vAL) != 'null') && (strlen(trim($vAL)) > 0))  
         return true;  
      else  
         return false;  
   }  
}

// Valida un password en texto plano contra uno encriptado 
 
function pass_validate($pLN, $eNCR)  
{  
   if (not_null($pLN) && not_null($eNCR)) 
   { 
    $pIL = explode(':', $eNCR); 
    if (sizeof($pIL) != 2) 
       return false; 
    if (md5($pIL[1] . $pLN) == $pIL[0]) 
       return true;  
   }  
return false;  
}

// Genera un pass encriptado a partir de uno texto plano 

function pass_encript($pLN)
{ 
  $pASS = ''; 
  for ($i=0; $i<10; $i++) 
     $pASS .= mt_rand(); 
     $sALT = substr(md5($pASS), 0, 2); 
     $pASS = md5($sALT . $pLN) . ':' . $sALT; 
     return $pASS; 
  } 

//Obtenemos la ip real del cliente 
function get_ip() 
{ 
   if (preg_match('/^(\d{1,3}\.){3}\d{1,3}$/s', $_SERVER["HTTP_CLIENT_IP"])) 
      $ip = $_SERVER["HTTP_CLIENT_IP"]; 
   else 
   { 
     if (preg_match('/^(\d{1,3}\.){3}\d{1,3}$/s', $_SERVER["HTTP_X_FORWARDED_FOR"])) 
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
     else 
        if (preg_match('/^(\d{1,3}\.){3}\d{1,3}$/s', $_SERVER["REMOTE_HOST"])) 
           $ip = $_SERVER["REMOTE_HOST"]; 
        else 
           $ip = $_SERVER["REMOTE_ADDR"]; 
  } 
 return($ip); 
 } 
?>


Codigo tablas.php

Código :

<?php 
 define('TABLA_USERS','usuarios'); 
 ?> 


Codigo sessions.php

Código :


<?php 
class sessions{
   function sessions()  
   { 
   $this->methodTable = array( 
                   "write" => array( 
                   "description" => "Guarda el valor 'value' en la variable de session 'key'.",                          
                  "access" => "remote", 
                   "arguments" => array ("key","value")  
                  ), 
                  "read" => array(  
                  "description" => "Devuelve el contenido de la variable de session 'key'.", 
                   "access" => "remote", 
                   "arguments" => array ("key")  
                  ), 
                   "readAll" => array( 
                   "description" => "Devuelve el contenido de la session completa", 
                   "access" => "remote" 
                   ), 
    
                  "sessid" => array(    
                   "description" => "Devuelve el Id de session activa.", 
                   "access" => "remote" 
                   ), 
                   "erase" => array( 
                  "description" => "Elimina la variable 'key' de la session", 
                   "access" => "remote", 
                   "arguments" => array("key") 
                   ) 
          );  
} 
 

 
   //Escribe un valor desde Flash en la sessión activa 
 
   function write($key, $value)  
   { 
   $_SESSION[$key] = $value;  
   return isset($_SESSION[$key]);  
} 
 
   //Devuelve a Flash el contenido de una variable de sessión concreto  
   function read($key)  
   {  
   return $_SESSION[$key];  
   } 
 
   //Devuelve a Flash el contenido completo de la sessión.     
   function readAll()  
   {  
   return $_SESSION;  
   } 
 
   //Devuelve a Flash el identificador de la sessión activa  
   function sessid()  
   {  
   return session_id();  
   } 
 
   //Elimina una varible de sessión desde Flash.  
   function erase($key)  
   {  
   unset($_SESSION[$key]);  
   return true;  
   } 
 
}
?> 


La verdad no se q estoy haciendo mal :( les pido su apoyo ....

Gracias

Por Israelmx

8 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 08 Jul 2007 06:03 pm
Hola Amigo, la clase Session.as no está definida en el tuto, el creador de ese tuto la puso de esta manera:

Session.as

Esta Clase es IDENTICA a la anterior expuesta, solo que para el servicio sessions.php, por lo tanto os insto a que la escribáis vosotros, basándose en la clase anterior, y en el php, sessions.php, es muy sencillo ya vereis, si hay dudas, en el foro se resolverán ;)

Claro está, la explicación que da para hacerla es de lo maaaaaaaaaás sencilla, pero hasta ahora parece que nadie puede comprendes que quiso decir, osea el tuto esta INCOMPLETO, por lo tanto indecifrable (para los que estamos empezando en flash), solo el que lo creo sabe lo que quiso decir, esperemos que este gran genio nos muestre algun dia la ruta a ese misterio...

Por fcupen

1 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 20 Jul 2007 10:50 am
La clase Session.as, es EXACTAMENTE igual a User.as, simplemente cambien el nombre de las funciones a usar, ya que deben coincidir con las exportadas por el servicio session.php que si suministré con el tuto.

Realmente, sigo pensando que era bastante simple, y obligaba a entender el resto del documento para poder usarlo, superando el simple y trivial Copy-Paste.

Saludos... :)

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 22 Sep 2007 08:09 pm
Saludos amigos

en donde puedo descagar este script? "sesiones.zip" en remoting

www.minerometall.conc.es/fecsaendesa/img/flash/sesiones.zip <- YA QUE NO SIRVE ESTE ENLACE

Gracias

Por xyyy7

16 de clabLevel



 

Béisbol, Petróleo y Mujeres Bellas.- Venezuela (Maracay)

firefox
Citar            
MensajeEscrito el 20 Nov 2010 05:07 pm
alguien podria poner el archivo sessions.as a su manera porfabor :D
y saludos a toda la comunidad

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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