Ok, sembra che ce l'abbia fatta...
il mio errore era chiamare session_start() prima di session_set_save_handler().
Posto il risultato qui di seguito, magari a qualcuno può interessare
Codice PHP:
ini_set('session.save_handler', 'user');
switch($_SERVER["SERVER_NAME"])
{
case 'localhost':
define( 'HOST' , 'localhost' );
define( 'DB' , '' );
define( 'USER' , '' );
define( 'PASSWORD' , '' );
break;
}
define( 'DBP' , 'razor_' );
define( 'TAB_SESSIONI' , DBP.'sessioni' );
class DatabaseSessionStorage
{
private static $db = NULL;
public static function open
(
$save_path,
$session_name
)
{
self::$db = new mysqli(HOST,USER,PASSWORD,DB);
if(mysqli_connect_errno() != 0)
return FALSE;
else
return TRUE;
}
public static function close()
{
if(self::$db !== NULL)
{
self::$db->close();
self::$db = NULL;
}
}
public static function read($id)
{
$id = self::$db->real_escape_string($id);
$query = "SELECT * FROM ".TAB_SESSIONI." WHERE session_id = '".$id."' ";
$result = @self::$db->query($query);
if(self::$db->errno != 0)
{
$err = self::$db->error;
return '';
}
if(($row = @$result->fetch_assoc()) !== NULL)
$data = $row['session_data'];
else
$data = '';
$result->close();
return $data;
}
public static function write($id, $session_data)
{
$id = self::$db->real_escape_string($id);
$query = "DELETE FROM ".TAB_SESSIONI." WHERE session_id = '".$id."'";
$result = @self::$db->query($query);
if(self::$db->errno != 0)
return FALSE;
$session_data = self::$db->real_escape_string($session_data);
$query = "INSERT INTO ".TAB_SESSIONI." VALUES('".$id."', NOW(), '".$session_data."')";
$result = @self::$db->query($query);
if(self::$db->errno != 0)
return FALSE;
else
return TRUE;
}
public static function destroy($id)
{
$id = self::$db->real_escape_string($id);
$query = "DELETE FROM ".TAB_SESSIONI." WHERE session_id = '".$id."'";
$result = @self::$db->query($query);
if(self::$db->errno != 0)
return FALSE;
else
return TRUE;
}
public static function gc($MaxLifeTime)
{
$maxDate = date('Y-m-d H:m:s', time() - $maxLifeTime);
$query = "DELETE FROM ".TAB_SESSIONI." WHERE last_update < '".$maxDate."'";
$result = @self::$db->query($query);
if(self::$db->errno != 0)
return FALSE;
return TRUE;
}
}
$session = new DatabaseSessionStorage;
session_set_save_handler(
array(&$session, 'open'),
array(&$session, 'close'),
array(&$session, 'read'),
array(&$session, 'write'),
array(&$session, 'destroy'),
array(&$session, 'gc')
);
session_start();