lunes, 11 de enero de 2010

Variables de Sesión en PHP

Ejemplo de login.php:

Código PHP:
<?
if (!isset($usuario)) {
         
/* mostrar aca un formulario para que cargue usuario y password */
         
?>
                     <FORM ..............
                     </FORM>
         <?
} else {
        
/* aca pone codigo para validar usuario y password (ej: buscar en una base de datos y ver si todo coincide) */
        /* Si coincide, generamos la hash para validar al usuario en todas las paginas, sino volves a mostrar este form con un mensaje de error */
         
$hash time().'#'.md5(time().$hash_secret);
         
## y haces un redirect a la pagina que corresponda
};
?>

Ahora lo que tenes que hacer es pasar ese hash en cada link que hagas como un parametro más.
Depues en cada pagina, para validar el usuario:

Código PHP:
<?
## validar usuario
if (isset($hash)) {
    
## divido el hash para controlarlo
    
$hash explode('#',$hash);
    if (
$hash[1] == md5($hash[0].$hash_secret) {
           
## por aca entra si el hash esta ok
           ## aca podes ver si ya paso mas de media hora por ejemplo, para deslogearlo automaticamente
          
if ( (time()-1800) > $hash[0]) {
                
$logged false;
          } else {
                
$logged true;
                
# y actualizas la hash
                
$hash time().'#'.md5(time().$hash_secret);
          };
    } else {
          
## alguien quiere cagarte con la cookie. Pone un mensaje de que logeaste su ip y avisaste al administrador, para por lo menos hacerlo considerar el tratar de volver a jugar con la url.
           
$logged false;
    };
} else {
    
$logged false
};
if (
$logged) {
         
## OK, codigo de la pagina para usuario logeado
} else {
         
## no esta logeado, podes hacer un redirect al login.php
};
?>

Podes poner esto como una funcion e incluirla en cada php.
Espero que ayude.
Saludos!!

PD: es recomendable que cada tanto modifiques lavariable $hash_secret, por cuestiones de seguridad.

No hay comentarios:

Publicar un comentario