class Session {
public $sess_key, $sess_timeout, $sess_val;
function start($timeout = 604800) {
do {
$this->sess_key = md5(mt_rand());
$sql = mysql_query("SELECT id FROM sessions WHERE sess_key = '{$this->sess_key}'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
} while(mysql_num_rows($sql) == 1);
$this->sess_timeout = $timeout;
}
function register($val) {
$user_ip = $_SERVER['REMOTE_ADDR'];
mysql_query("DELETE FROM sessions WHERE user_id = '" . addslashes($val) . "'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
mysql_query("INSERT INTO sessions (sess_key, user_id, ip, sess_start, sess_timeout, last_update) VALUES ('{$this->sess_key}', '" . addslashes($val) . "', '$user_ip', UNIX_TIMESTAMP(), (UNIX_TIMESTAMP() + {$this->sess_timeout}), UNIX_TIMESTAMP())") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
$exp = $this->sess_start + $this->sess_timeout;
$_COOKIE['sess_key'] = $this->sess_key;
$secure = "false";
if(array_key_exists("HTTPS", $_SERVER) && $_SERVER['HTTPS'] == "on") $secure = "true";
?>
}
function destroy() {
if(isset($_COOKIE["sess_key"])) {
$temp_key = addslashes($_COOKIE["sess_key"]);
mysql_query("DELETE FROM sessions WHERE sess_key = '$temp_key'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
$secure = "false";
if(array_key_exists("HTTPS", $_SERVER) && $_SERVER['HTTPS'] == "on") $secure = "true";
?>
}
}
function expire() {
if(isset($_COOKIE["sess_key"])) {
$this->sess_key = $_COOKIE["sess_key"];
$query = mysql_query("SELECT last_update, sess_timeout FROM sessions WHERE sess_key = '{$this->sess_key}'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
//$fetch = mysql_fetch_array($query);
$access = mysql_result($query, 0, 'last_update');
$expire = mysql_result($query, 0, 'sess_timeout');
if($access > $expire) {
$this->destroy();
}
@mysql_free_result($query);
}
}
function read() {
if(isset($_COOKIE["sess_key"])) {
$temp_key = addslashes($_COOKIE["sess_key"]);
$query = mysql_query("SELECT user_id FROM sessions WHERE sess_key = '$temp_key'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
if($query && mysql_num_rows($query) == 1) {
//$fetch = mysql_fetch_array($query);
$this->sess_val = stripslashes(mysql_result($query, 0, 'user_id'));
$this->expire();
mysql_query("UPDATE sessions SET last_update = UNIX_TIMESTAMP() WHERE sess_key = '{$this->sess_key}'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
@mysql_free_result($query);
} else { // Session error. expire.
//$this->destroy();
//$_SESSION['nick_id'] = "";
//$_SESSION['user_id'] = "";
}
}
}
function replace($val) {
if(isset($_COOKIE["sess_key"])) {
$temp_key = addslashes($_COOKIE["sess_key"]);
mysql_query("UPDATE sessions SET user_id = '$val' WHERE sess_key = '$temp_key'") or print(mysql_error() . " " . __FILE__ . " #" . __LINE__);
}
}
}
?>