<?php
require_once('includes/config.inc.php');
/* Create new object of class */
$ses_class = new session();
/* Define the mysql table you wish to use with
this class, this table MUST exist. */
$ses_class->ses_table = "Sessions";
/* Change to 'Y' if you want to connect to a db in
the _open function */
$ses_class->db_con = "Y";
/* Configure the info to connect to MySQL, only required
if $db_con is set to 'Y' */
$ses_class->db_host = $GLOBALS['config']['mysql']['host']; // MySQL Host
$ses_class->db_user = $GLOBALS['config']['mysql']['user']; //MySQL User
$ses_class->db_pass = $GLOBALS['config']['mysql']['password']; //MySQL Pass
$ses_class->db_dbase = $GLOBALS['config']['mysql']['database']; //MySQL Database
/* Change the save_handler to use the class functions */
session_set_save_handler (array(&$ses_class, '_open'),
array(&$ses_class, '_close'),
array(&$ses_class, '_read'),
array(&$ses_class, '_write'),
array(&$ses_class, '_destroy'),
array(&$ses_class, '_gc'));
ini_set('session.hash_function','1');
ini_set('session.hash_bits_per_character','6');
ini_set('session.use_trans_sid','0');
ini_set('session.use_cookies','1');
ini_set('session.cookie_secure','1');
/* Start the session */
session_name("CronusID");
session_start();
/* Prevent possible hijacking attempts */
session_regenerate_id();
class session
{
public $ses_table;
public $db_con = "Y";
public $db_host; // MySQL Host
public $db_user; //MySQL User
public $db_pass; //MySQL Pass
public $db_dbase; //MySQL Database
/* Create a connection to a database */
function db_connect() {
$mysql_connect = @mysql_pconnect ($this->db_host,
$this->db_user,
$this->db_pass);
$mysql_db = @mysql_select_db ($this->db_dbase);
if (!$mysql_connect || !$mysql_db) {
return FALSE;
} else {
return TRUE;
}
}
/* Open session, if you have your own db connection
code, put it in here! */
function _open($path, $name) {
if ($this->db_con == "Y") {
$this->db_connect();
}
return TRUE;
}
/* Close session */
function _close() {
/* This is used for a manual call of the
session gc function */
$this->_gc(0);
return TRUE;
}
/* Read session data from database */
function _read($ses_id) {
$session_sql = "SELECT * FROM " . $this->ses_table
. " WHERE ses_id = '$ses_id'";
$session_res = @mysql_query($session_sql);
if (!$session_res) {
return '';
}
$session_num = @mysql_num_rows ($session_res);
if ($session_num > 0) {
$session_row = mysql_fetch_assoc ($session_res);
$ses_data = $session_row["ses_value"];
return $ses_data;
} else {
return '';
}
}
/* Write new data to database */
function _write($ses_id, $data) {
$session_sql = "UPDATE " . $this->ses_table
. " SET ses_time='" . time()
. "', ses_value='$data' WHERE ses_id='$ses_id'";
$session_res = @mysql_query ($session_sql);
if (!$session_res) {
return FALSE;
}
if (mysql_affected_rows ()) {
return TRUE;
}
$session_sql = "INSERT INTO " . $this->ses_table
. " (ses_id, ses_time, ses_start, ses_value)"
. " VALUES ('$ses_id', '" . time()
. "', '" . time() . "', '$data')";
$session_res = @mysql_query ($session_sql);
if (!$session_res) {
return FALSE;
} else {
return TRUE;
}
}
/* Destroy session record in database */
function _destroy($ses_id) {
$session_sql = "DELETE FROM " . $this->ses_table
. " WHERE ses_id = '$ses_id'";
$session_res = @mysql_query ($session_sql);
if (!$session_res) {
return FALSE;
} else {
return TRUE;
}
}
/* Garbage collection, deletes old sessions */
function _gc($life) {
$ses_life = strtotime("-5 minutes");
$session_sql = "DELETE FROM " . $this->ses_table
. " WHERE ses_time < $ses_life";
$session_res = @mysql_query ($session_sql);
if (!$session_res) {
return FALSE;
} else {
return TRUE;
}
}
}
?>