Jeg håber at du er kvartgod til PHP !
:-)
Demo kode:
<?php
function delete_file($S) {
if(isset($S['filnavn'])) {
$fnm = $S['filnavn'];
@unlink($fnm);
}
}
require('session_hook.php');
set_session_destroy_hook('delete_file');
session_start();
$_SESSION['filnavn'] = 'C:\foobar.dat';
echo "OK";
?>
hvor session_hook.php ser ud som:
<?php
// sligthly modified version of code from
http://www.php.net/manual/en/function.session-set-save-handler.php$hook = '';
$sess_save_path = session_save_path();
function special_session_decode($session_string){
$current_session = session_encode();
foreach ($_SESSION as $key => $value){
unset($_SESSION[$key]);
}
session_decode($session_string);
$restored_session = $_SESSION;
foreach ($_SESSION as $key => $value){
unset($_SESSION[$key]);
}
session_decode($current_session);
return $restored_session;
}
function open($save_path, $session_name) {
global $sess_save_path;
$sess_save_path = $save_path;
return true;
}
function close() {
return true;
}
function read($id) {
global $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
return (string) @file_get_contents($sess_file);
}
function write($id, $sess_data) {
global $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
$return = @fwrite($fp, $sess_data);
fclose($fp);
return $return;
} else {
return false;
}
}
function destroy($id) {
global $hook;
$hook(special_session_decode(read($id)));
global $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
return @unlink($sess_file);
}
function gc($maxlifetime) {
global $sess_save_path;
foreach (glob("$sess_save_path/sess_*") as $filename) {
global $hook;
$hook(special_session_decode(@file_get_contents($filename)));
if (filemtime($filename) + $maxlifetime < time()) {
@unlink($filename);
}
}
return true;
}
function set_session_destroy_hook($callback) {
global $hook;
$hook = $callback;
session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
}
?>