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();
}
}
?>