Salve a tutti!
spero di riuscire a far capire di cosa ho bisogno: sto imparando ad utilizzare php in tempi un po' troppo brevi per i miei gusti (ho una scadenza per un progetto di laurea universitario) ed ora sto iniziando ad integrare le sessioni. Ho il mio progetto che sembra essere funzionale (speriamo) e nel quale è prevista una login iniziale. Dopo questa l'utente ha loggato può essere generico o amministratore grazie ad un campo temp (0 o 1) presente nel database nella tabella "utenti". Nelle varie pagine si verifica se l'utente è loggato e quindi se può accedere con qualcosa del tipo:
e fin qui credo sia tutto ok...Codice PHP:<?php
include_once("../include/config.php")
include_once("../include/auth.lib.php");
list($status, $user) = auth_get_status();
if($status == AUTH_LOGGED){
$msg = 'Contenuto della pagina';
}else $msg = 'Non hai i diritti per visualizzare la pagina';
?>
Ora credo che per portarmi dietro il tipo di permesso dell'utente devo utilizzare le sessioni. Allora mi sono letto la vostra bella guida (approfitto per i complimenti al sito!) ed ho creato il file db_session_class.php (e la rispettiva tabella my_session nel database) strutturato come segue:
ora cosa dovrei fare per mantenere questo riferimento ai permessi nelle pagine?Codice PHP:
<?php
require('config.inc.php');
class my_session {
var $my_session_id; // l'id di sessione
var $session_time; // la durata della sessione
var $session_gc_time; // il tempo per la garbage collection
//il costruttore della classe, inizializza le variabili
function my_session($session_time, $session_gc_time) {
$this->my_session_id = (!isset($_COOKIE['my_session_id'])) ? md5(uniqid(microtime())) : $_COOKIE['my_session_id'];
$this->session_time = $session_time;
$this->session_gc_time = $session_gc_time;
}
// avvia o aggiorna la sessione
function my_session_start() {
$cookie_expire = ($this->session_time > 0) ? (time() + $this->session_time) : 0;
if(!isset($_COOKIE['my_session_id'])) {
setcookie('my_session_id', $this->my_session_id, $cookie_expire);
mysql_query("INSERT INTO my_session VALUES('" . $this->my_session_id . "', '', " . time() . ")");
} else {
if($this->session_time > 0)
setcookie('my_session_id', $this->my_session_id, $cookie_expire);
}
}
/* registra le variabili di sessione
specificata nel database */
function my_session_register($name, $value) {
$_MY_SESSION = array();
$session_query = mysql_query("SELECT session_vars FROM my_session WHERE sessid = '{$this->my_session_id}'");
if(mysql_num_rows($session_query) > 0) {
$result = mysql_fetch_array($session_query);
$_MY_SESSION = unserialize($result['session_vars']);
$_MY_SESSION[$name] = $value;
mysql_query("UPDATE my_session SET session_vars = '" . serialize($_MY_SESSION) . "' WHERE sessid = '{$this->my_session_id}'");
} else {
$_MY_SESSION[$name] = $value;
mysql_query("UPDATE my_session SET session_vars = '" . serialize($_MY_SESSION) . "' WHERE sessid = '{$this->my_session_id}'");
}
}
/* legge e restituisce le variabili di sessione
(o la singola variabile specificata */
function my_session_read($key = '') {
$session_query = mysql_query("SELECT session_vars FROM my_session WHERE sessid = '{$this->my_session_id}'");
if(mysql_num_rows($session_query) > 0) {
$result = mysql_fetch_array($session_query);
$session_vars = unserialize($result['session_vars']);
return (isset($key) && $key) ? $session_vars[$key] : $session_vars;
}
}
/* distrugge la sessione, rimuovendo i relativi
dati (non cancella il cookie) */
function my_session_destroy() {
mysql_query("UPDATE my_session SET session_vars = '' WHERE sessid = '{$this->my_session_id}'");
}
// procedura di garbage collection
function my_session_gc() {
mysql_query("DELETE FROM my_session WHERE session_date < " . (time() - $this->session_gc_time));
}
} // end class
?>
my_session_start() in ogni pagina?
my_session_register() quando?
my_session_destroy() quando?
come recupero il permesso nella pagina e come lo controllo?
ed infine: se utilizzo questa procedura è comunque necessario il controllo iniziale per vedere se l'utente è loggato?
scusate lo sproloquio ma cerco di far capire qual'è il mio intoppo.
Ciao e grazie anticipatamente a chi potrà darmi una mano

Rispondi quotando