Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/08/2005, 01:47
Avatar de walo
walo
 
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
Despues de mucho leer llegue a esto. No se si es el mejor metodo, me gustaria que me den sus comentarios

Código PHP:
<?

// pregunto si hay cookie. 
// Si la hay decodifico el ID de la session
if(isset($_COOKIE['secId'])) {
    
session_id(base64_decode($_COOKIE['secId']));
}

// tiempo de expiracion = 10 minutos
$expiry 60*10;
session_start();

// guarda en la cookie el nombre de la 
// session codificado para que no sea legible
setcookie(session_name(),base64_encode(session_id()), time()+$expiry"/");

// Lo mismo que arriba, pero en lugar de 
// usar el nombre de la sesion uso secId 
// para luego recuperar el valor desde 
// este nombre de variable
setcookie('secId',base64_encode(session_id()), time()+$expiry"/");


// Si el navegador cambia se destruye la 
// sesion y devuelve un mensaje de error
if(!isset($_SESSION['ua'])) {
    
$_SESSION['ua'] = sha1($_SERVER['HTTP_USER_AGENT']);
} else {
    if(
$_SESSION['ua'] != sha1($_SERVER['HTTP_USER_AGENT'])) {
            echo 
"Su navegador ha cambiado. Debe loguearse nuevamente.";
                
$_SESSION['userlog'] = 0;
        
session_destroy();
                die();
    }
}

// Si la IP del cliente cambia se destruye 
// la sesion y devuelve un mensaje de error
// Esta parte es opcional y no es recomendada 
// en todos los casos. Ya que el cliente 
// podria estar detras de un firewall con ip 
// rotativa y no podria ingresar.
if(!isset($_SESSION['ui'])) {
    
$_SESSION['ui'] = sha1($_SERVER['REMOTE_ADDR']);
} else {
    if(
$_SESSION['ui'] != sha1($_SERVER['REMOTE_ADDR'])) {
            echo 
"Su IP ha cambiado. Debe loguearse nuevamente. Si usted esta detras de un firewall con IP rotativa no podra acceder al sistema.";
                
$_SESSION['userlog'] = 0;
        
session_destroy();
                die();
    }
}
?>