Salve a tutti vedendo che me l'hanno chiesta due in due 3d...vi posto questa "famosa" classe per le sessioni. La pagina da includere che è la classe è la seguente:
Codice PHP:
<?php
class session {
var $file_name;
var $sess_dir;
var $sess_id;
var $sess_file;
var $sess_time;
function session($session_dir=".", $session_time=0) {
$this->sess_id = (!isset($_COOKIE['session_id'])) ? (md5(microtime() . $_SERVER['REMOTE_ADDR'])) : ($_COOKIE['session_id']);
$this->file_name = $this->sess_id . ".session";
$this->sess_dir = ($session_dir == "") ? "." : $session_dir;
$this->sess_time = ($session_time > 0) ? (time() + $session_time) : 0;
$this->sess_file = $this->sess_dir . "/" . $this->file_name;
if(!isset($_COOKIE['session_id'])) {
setcookie("session_id", $this->sess_id, $this->sess_time);
}
global $_SESSION;
$_SESSION = (@implode("", file($this->sess_file)) == "") ? (array()) : (unserialize(implode("", $this->sess_file)));
}
function register($var, $value) {
$SESS = array();
if(file_exists($this->sess_file)) {
$SESS = @unserialize(@implode("", @file($this->sess_file)));
}
$SESS[$var] = $value;
$fp = @fopen($this->sess_file, "wb");
@fwrite($fp, serialize($SESS));
fclose($fp);
global $_SESSION;
$_SESSION = $SESS;
}
function un_set($var="") {
$var_to_unset = ($var == "") ? 00112233445566778899 : $var;
$fp = @fopen($this->sess_file, "wb");
if($var_to_unset == 00112233445566778899) {
@fwrite($fp, "")
}else{
global $_SESSION;
unset($_SESSION[$var_to_unset]);
@fwrite($fp, serialize($_SESSION));
}
fclose($fp);
}
function destroy() {
@unlink($this->sess_file);
setcookie("session_id", "", time() + 1);
global $_SESSION;
unset($_SESSION);
}
}
?>
ecco adesso vi spiego come utilizzarla.
Per avviare la sessione, come session_start(), sempre dopo l'inclusione basta utilizzare la funzione session() della classe. Il primo parametro è la directory dove salvare i dati di sessione, senza slash finale, quindi per salvare nella dir corrente basta scrivere "." oppure "". Il secondo parametro è la durata, se non viene settata si crea un magic cookie e la sessione si distrugge automaticamente alla chiusura del browser. La sintassi è questa:
Codice PHP:
$session = new session("dir", durata in secondi);
se non si mette niente nei campi viene creata una sessione nella directory corrente con un magic cookie. Per memorizzare un dato di sessione:
Codice PHP:
$session->register("variabile", "valore");
questo setta una variabile di sessione con nome "variabile" e valore "valore". Per leggere un dato di sessione basta fare
Codice PHP:
$_SESSION['variabile da leggere']
Per unsettare una variabile di sessione o i dati dell'intera sessione, lasciandola però ancora aperta, scrivete:
Codice PHP:
$session->un_set("variabile");
questo distrugge la variabile "variabile", se non si specifica niente vengono cancellati tutti i dati di sessione. Infine per distruggere la sessione basta fare
Codice PHP:
$session->destroy();
ecco vi ho detto tutto.
spero serva...come al solito non faccio mai qualcosa di utile al forum