Utilizzo una mia classe personalizzata per gestire le sessioni nel database
# session.php
Codice PHP:
class Session {
var $database;
function Session($database) {
$this->database = & $database;
session_set_save_handler(array($this, 'open'),
array($this, 'close'),
array($this, 'read'),
array($this, 'write'),
array($this, 'destroy'),
array($this, 'gc'));
$this->startSession();
}
function startSession() {
@session_start();
}
function deleteSession() {
@session_destroy();
}
function open($sessPath, $sessName) {
return true;
}
function close() {
return true;
}
function read($sessId) {
$query = $this->database->mysqlQuery('readSession', array($sessId), 1);
if ($this->database->mysqlNumRows()) {
$dataSession = $this->database->mysqlFetchAssoc();
return $dataSession['sessData'];
}
}
function write($sessId, $sessData) {
$query = $this->database->mysqlQuery('writeSession', array($sessId, $sessData, time()));
}
function destroy($sessId) {
$query = $this->database->mysqlQuery('destroySession', array($sessId));
}
function gc($sessMaxLifeTime) {
$query = $this->database->mysqlQuery('deleteSessions', array((time() - SESSION_TIME)));
}
}
?>
# index.php
Codice PHP:
<?php
error_reporting(E_ALL);
class Core {
function Core() {
$this->initDatabase();
$this->initSession();
}
function initDatabase() {
/*****/
}
function initSession() {
@ob_start();
require_once(PATH.'includes/server.php');
require_once(PATH.'includes/session.php');
$this->session = new Session($this->database);
echo 1;
}
}
non stampa echo 1 dopo aver inizializzato la sessione