salve
sto creando un sito dove un utente può caricare delle immagini...
quando carica la prima immagine, creo una sessione e una cartella con l'id sessione nella quale verranno copiati i file uploadati
quando l'utente chiude il browser (destroy) oppure lascia il sito (maxlifetime expired) i file che ha caricato devono essere eliminati
sto provando ad usare la funzione session_set_save_handler()
ecco il codice:
sessions.php
Codice PHP:
// Attiva i cookie di sessione
ini_set("session.use_cookies", 1);
// Accetta ID solo da cookie, rifiuta se vengono propagati da URL
ini_set("session.use_only_cookies", 1);
// Informa PHP che dovrà usare dei gestori definiti da noi
ini_set("session.save_handler", "user");
// Impostiamo la cartella del server che dovrà contenere i file di sessione
ini_set("session.save_path", "C:\\Programmi\\Apache2.2\\htdocs\\sessioni\\\");
define("FILE_PREFISSO", "sess_"); // Inizio nome dei file di sessione
define("FILE_ESTENSIONE", ".txt"); // Estensione dei file di sessione
$session_file = NULL;
function ss_apertura($path, $nome)
{...}
function ss_chiusura($path, $nome)
{...}
function ss_lettura($path, $nome)
{...}
function ss_scrittura($path, $nome)
{
global $session_file;
$id = session_id();
$filename = session_save_path() . "/" . FILE_PREFISSO . $id . FILE_ESTENSIONE;
try
{
$session_file = @fopen($filename, "w+");
@fwrite($session_file, $dati); // Scriviamo nel file i nuovi dati di sessione
return true;
}
catch (Exception $e)
{ return false; }
}
function ss_distruzione($id)
{
echo"SessDestr";
$id = session_id();
$filename = session_save_path() . "/" . FILE_PREFISSO . $id . FILE_ESTENSIONE;
@unlink($filename); // Cancella il file
}
function ss_gc($path, $nome)
{...}
session_set_save_handler("ss_apertura", "ss_chiusura", "ss_lettura", "ss_scrittura", "ss_distruzione", "ss_gc");
if(session_id()==0)
session_start();
questi sono i parametri relativi alle sessioni nel file php:
session.cookie_lifetime=6
session.gc_maxlifetime=6
ovviamente per ora (come si capisce dal codice)
non ho implementato la funzione GC, ma solo la destroy
cosi da provare se viene eseguita quando un utente chiude il browser
ovviamente... non funziona...
quando chiudo il browser, il file scritto dalla funzione ss_write() non viene cancellato
any ideas?
grazie