Hola,
Como dice miguel86, las sesiones se guardan en el servidor, lo que guarda el cliente es un ID que identifica a la sesión.
Lo que quieres hacer es simple, creas una clase para los usuarios, aquí te dejo un ejemplo:
/*****************************************
* Funciones para las cuentas
****************************************/
class ACC {
public $id; // Account ID
public $auser; // User ID
public $pass; // Pass cifrada
public $level; // Nivel
/******************************************************
* Inicializar la sesión de la cuenta
* $_SESSION['us'] = new ACC(<columnas del select>);
*****************************************************/
public function ACC($a) {
global $cnf;
list($this->id, $this->auser, $this->pass, $this->level) = $a; $this->pass = md5(sha1($this->pass)); // ciframos la pass $this->level = (isset($cnf['lvl'][$this->level]))?
$cnf['lvl'][$this->level]:$cnf['lvl']['Defecto']; return;
}
}
Luego $cnf es el archivo de configuración, haces algo así:
$leer = 1;
$editar = 2;
$crear = 4;
$banear = 8;
$cnf = array ( 'lvl' => array ( "Admin" => $leer | $editar | $crear | $banear, // Todos los permisos "Defecto" => $leer )); // Defecto será cuando el nivel seleccionado en la DB no exista
Entonces cuando inicie sesión pones:
$_SESSION['us'] = new ACC($rs->fetch_row); // Les pasas los datos seleccionados
Pongamos que quieres comprobar los permisos de creación:
if(isset($_SESSION['us'])){ // Si no está logeado }
if($_SESSION['us']->level & 4)
echo "Tiene permisos para crear";
else echo "No tiene permisos para crear";
Ojalá te sea de ayuda.
Saludos!