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