| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | <?phpclass LtSessionSqlite implements LtSessionStore{	public $conf;	private $lifeTime; //session.gc_maxlifetime	private $dbHandle;	private $dbName;	private $tableName;	public function __construct()	{ 		// --	}	public function init()	{		if (isset($this->conf['gc_maxlifetime']))		{			$this->lifeTime = $this->conf['gc_maxlifetime'];		}		else		{			$this->lifeTime = get_cfg_var("session.gc_maxlifetime");		}		if (isset($this->conf['table_name']))		{			$this->tableName = $this->conf['table_name'];		}		else		{			$this->tableName = 'lotus_session';		}		if (isset($this->conf['db_name']))		{			$this->dbName = $this->conf['db_name'];		}		else		{			$this->dbName = '/tmp/Lotus/session/session_sqlite2.db';		}		if (!$this->dbHandle = sqlite_open($this->dbName, 0666))		{			trigger_error('session sqlite db error');			return false;		}		return true;	}	public function open($savePath, $sessName)	{		return true;	}	public function close()	{		$this->gc($this->lifeTime);		return @sqlite_close($this->dbHandle);	}	public function read($sessID)	{		$res = sqlite_query("SELECT session_data AS d FROM $this->tableName                           WHERE session_id = '$sessID'                           AND session_expires > " . time(), $this->dbHandle);		if ($row = sqlite_fetch_array($res, SQLITE_ASSOC))		{			return $row['d'];		}		else		{			return "";		}	}	public function write($sessID, $sessData)	{		$newExp = time() + $this->lifeTime;		$res = sqlite_query("SELECT * FROM $this->tableName                           WHERE session_id = '$sessID'", $this->dbHandle);		if (sqlite_num_rows($res))		{			sqlite_exec("UPDATE $this->tableName                        SET session_expires = '$newExp',                        session_data = '$sessData'                        WHERE session_id = '$sessID'", $this->dbHandle);			if (sqlite_changes($this->dbHandle))			{				return true;			}		}		else		{			sqlite_exec("INSERT INTO $this->tableName (                        session_id,                        session_expires,                        session_data)                        VALUES(                        '$sessID',                        '$newExp',                        '$sessData')", $this->dbHandle);			if (sqlite_changes($this->dbHandle))			{				return true;			}		}		return false;	}	public function destroy($sessID)	{		sqlite_exec("DELETE FROM $this->tableName WHERE session_id = '$sessID'", $this->dbHandle);		if (sqlite_changes($this->dbHandle))		{			return true;		}		return false;	}	public function gc($sessMaxLifeTime)	{		sqlite_exec("DELETE FROM $this->tableName WHERE session_expires < " . time(), $this->dbHandle);		return sqlite_changes($this->dbHandle);	}	public function runOnce()	{		$sql = "SELECT name FROM sqlite_master WHERE type='table' UNION ALL SELECT name FROM sqlite_temp_master WHERE type='table' AND name='" . $this->tableName . "'";		$res = sqlite_query($sql, $this->dbHandle);		$row = sqlite_fetch_array($res, SQLITE_ASSOC);		if (empty($row))		{			$sql = "CREATE TABLE $this->tableName (			[session_id] VARCHAR(255)  NOT NULL PRIMARY KEY,			[session_expires] INTEGER DEFAULT '0' NOT NULL,			[session_data] TEXT  NULL		)";			return sqlite_exec($sql, $this->dbHandle);		}		return false;	}}
 |