mirror of
https://github.com/avecms/AVE.cms.git
synced 2025-01-22 15:30:07 +00:00
161 lines
3.6 KiB
PHP
161 lines
3.6 KiB
PHP
<?php
|
||
|
||
/**
|
||
* AVE.cms
|
||
*
|
||
* @package AVE.cms
|
||
* @version 3.x
|
||
* @filesource
|
||
* @copyright © 2007-2014 AVE.cms, http://www.ave-cms.ru
|
||
*
|
||
* @license GPL v.2
|
||
*/
|
||
|
||
class AVE_Session_DB
|
||
{
|
||
|
||
public $sess_lifetime;
|
||
|
||
/**
|
||
* Хост
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $db_host;
|
||
|
||
/**
|
||
* Имя пользователя
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $db_user;
|
||
|
||
/**
|
||
* Пароль
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $db_pass;
|
||
|
||
/**
|
||
* Имя текущей БД.
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $db_dbase;
|
||
|
||
/**
|
||
* Префикс БД.
|
||
*
|
||
* @var string
|
||
*/
|
||
protected $db_prefix;
|
||
|
||
private $mysql_connect = null;
|
||
private $mysql_db = null;
|
||
|
||
/* Create a connection to a database */
|
||
function __construct()
|
||
{
|
||
// Подключаем конфигурационный файл с параметрами подключения
|
||
require (BASE_DIR . '/config/db.config.php');
|
||
|
||
$this->db_host = $config['dbhost'];
|
||
$this->db_user = $config['dbuser'];
|
||
$this->db_pass = $config['dbpass'];
|
||
$this->db_dbase = $config['dbname'];
|
||
$this->db_prefix = $config['dbpref'];
|
||
|
||
$this->sess_lifetime = (defined('SESSION_LIFETIME') && is_numeric(SESSION_LIFETIME))
|
||
? SESSION_LIFETIME
|
||
: (get_cfg_var("session.gc_maxlifetime") < 1440
|
||
? 1440
|
||
: get_cfg_var("session.gc_maxlifetime"));
|
||
|
||
if (! $this->mysql_connect = mysqli_connect ($this->db_host, $this->db_user, $this->db_pass))
|
||
{
|
||
$this->error();
|
||
}
|
||
|
||
if (! $this->mysql_db = mysqli_select_db ($this->mysql_connect, $this->db_dbase))
|
||
{
|
||
$this->error();
|
||
}
|
||
|
||
$this->mysql_connect->set_charset('utf8');
|
||
|
||
return true;
|
||
}
|
||
|
||
/* Open session */
|
||
function _open($path, $name)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
/* Close session */
|
||
function _close()
|
||
{
|
||
@mysqli_query($this->mysql_connect, "DELETE FROM " . PREFIX . "_sessions WHERE expiry < '" . time() . "'");
|
||
|
||
if ($this->mysql_connect !== null)
|
||
@mysqli_close($this->mysql_connect);
|
||
|
||
return true;
|
||
}
|
||
|
||
/* Read session */
|
||
function _read($ses_id)
|
||
{
|
||
$qid = @mysqli_query($this->mysql_connect, "SELECT value, Ip FROM " . PREFIX . "_sessions WHERE sesskey = '" . $ses_id . "' AND expiry > '" . time() . "'");
|
||
|
||
if ((list($value, $ip) = @mysqli_fetch_row($qid)) && $ip == $_SERVER['REMOTE_ADDR'])
|
||
{
|
||
return $value;
|
||
}
|
||
|
||
return '';
|
||
}
|
||
|
||
/* Write new data */
|
||
function _write($ses_id, $data)
|
||
{
|
||
if (! $qid = @mysqli_query($this->mysql_connect, "INSERT INTO ".PREFIX."_sessions VALUES ('".$ses_id."', ".(time()+$this->sess_lifetime).", '".addslashes($data)."', '".$_SERVER['REMOTE_ADDR']."', FROM_UNIXTIME(expiry, '%d.%m.%Y, %H:%i:%s'))"))
|
||
{
|
||
$qid = @mysqli_query($this->mysql_connect, "UPDATE ".PREFIX."_sessions SET expiry = ".(time()+$this->sess_lifetime).", expire_datum = FROM_UNIXTIME(expiry,'%d.%m.%Y, %H:%i:%s'), value = '".addslashes($data)."', Ip = '".$_SERVER['REMOTE_ADDR']."' WHERE sesskey = '".$ses_id."' AND expiry > '".time()."'");
|
||
}
|
||
|
||
return $qid;
|
||
}
|
||
|
||
/* Destroy session */
|
||
function _destroy($ses_id)
|
||
{
|
||
return @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE sesskey = '".$ses_id."'");
|
||
}
|
||
|
||
/* Garbage collection, deletes old sessions */
|
||
function _gc($maxlifetime)
|
||
{
|
||
$session_res = @mysqli_query($this->mysql_connect, "DELETE FROM ".PREFIX."_sessions WHERE expire < (UNIX_TIMESTAMP(NOW()) - " . (int)$maxlifetime . ")");
|
||
|
||
if (!$session_res) {
|
||
return false;
|
||
}
|
||
else
|
||
{
|
||
return true;
|
||
}
|
||
}
|
||
|
||
function error() {
|
||
ob_start();
|
||
header('HTTP/1.1 503 Service Temporarily Unavailable');
|
||
header('Status: 503 Service Temporarily Unavailable');
|
||
header('Retry-After: 3600');
|
||
header('X-Powered-By:');
|
||
display_notice("Error connect to MySQL.");
|
||
die;
|
||
}
|
||
}
|
||
?>
|