Files
sn/classes/class.Session.php
2012-05-24 15:04:19 -07:00

167 lines
3.6 KiB
PHP

<?php
require_once('classes/class.Database.php');
class Session {
private $database;
private $session_id;
private $data;
private $expiration;
private $user_agent;
private $lifetime;
private $session_name;
private $session_save_path;
public function __construct()
{
$this->user_agent = sha1((isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
$this->database = new Database;
$this->set_lifetime(get_cfg_var("session.gc_maxlifetime"));
setcookie('PHPSESSID',session_id(),(60*60*24*14));
session_set_cookie_params(60*60*24*14);
session_set_save_handler (
array($this, "open" ),
array($this, "close" ),
array($this, "read" ),
array($this, "write" ),
array($this, "destroy" ),
array($this, "gc" )
);
}
public function open($save_path, $session_name)
{
$this->set_session_save_path($save_path);
$this->set_session_name($session_name);
return true;
}
public function close()
{
return true;
}
public function read($session_id)
{
$time = time();
$this->set_session_id($session_id);
$sql = 'SELECT data FROM session WHERE session_id = "' . $this->session_id . '" AND user_agent = "' . $this->user_agent . '" AND ' . $time . ' < expiration';
$this->database->set_query($sql);
$this->database->query();
$results = $this->database->get_results();
return $results[0]['data'];
}
public function write($session_id,$data)
{
$time = time() + $this->lifetime;
$this->set_session_id($session_id);
$this->set_data($data);
$sql = "REPLACE INTO session (session_id,user_agent,data,expiration) VALUES ('" . $this->session_id . "', '" . $this->user_agent . "', '" . $this->data . "', '" . $time . "');";
$this->database->set_query($sql);
$this->database->query();
return $this->database->get_results();
}
function destroy($session_id)
{
$this->set_session_id($session_id);
$sql = 'DELETE FROM session WHERE session_id = "' . $this->session_id . '" AND user_agent = "' . $this->user_agent . '"';
$this->database->set_query($sql);
$this->database->query();
return $this->database->get_results();
}
function gc($max_lifetime)
{
$time = time();
$this->database = new Database;
$sql = 'DELETE FROM session WHERE expiration < ' . $time;
$this->database->set_query($sql);
$this->database->query();
return $this->database->get_results();
}
public function get_session_id()
{
return $this->session_id;
}
public function set_session_id($session_id)
{
$this->session_id = $session_id;
}
public function get_user_agent()
{
return $this->user_agent;
}
public function set_user_agent($user_agent)
{
$this->user_agent = $user_agent;
}
public function get_data()
{
return $this->data;
}
public function set_data($data)
{
$this->data = $data;
}
public function get_expiration()
{
return $this->expiration;
}
public function set_expiration($expiration)
{
$this->expiration = $expiration;
}
public function get_session_save_path()
{
return $this->session_save_path;
}
public function set_session_save_path($session_save_path)
{
$this->session_save_path = $session_save_path;
}
public function get_session_name()
{
return $this->session_name;
}
public function set_session_name($session_name)
{
$this->session_name = $session_name;
}
public function get_lifetime()
{
return $this->lifetime;
}
public function set_lifetime($lifetime)
{
$this->lifetime = $lifetime;
}
}
?>