Файл: core/classes/session.class.php
Строк: 120
<?php
if ( !defined('CS') ) { define('CS', 'cms'); }
if ( !defined('SS') ) { define('SS', 'cms'); }
class cmsSession {
private static $instance;
public static $domain;
public function __construct() {
$domain_cookie = explode('.', $_SERVER['HTTP_HOST']);
$domain_cookie_count = count($domain_cookie);
$domain_allow_count = -2;
if ( $domain_cookie_count > 2 ) {
if ( in_array($domain_cookie[$domain_cookie_count-2], array('com', 'net', 'org') )) $domain_allow_count = -3;
if ( $domain_cookie[$domain_cookie_count-1] == 'ua' ) $domain_allow_count = -3;
$domain_cookie = array_slice($domain_cookie, $domain_allow_count);
}
if ( ip2long($_SERVER['HTTP_HOST']) != -1 AND ip2long($_SERVER['HTTP_HOST']) !== FALSE ) self::$domain = null;
else self::$domain = '.' . implode('.', $domain_cookie);
ini_set('session.cookie_domain', self::$domain);
}
private function __clone() {}
//--------------------------- -----------------------------//
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self;
}
return self::$instance;
}
//--------------------------- -----------------------------//
/**
* Устанавливает кукис посетителю
* @param string $name
* @param string $value
* @param int $time
*/
public function setCookie($name, $value, $time = '') {
if (!$time) $time = round(time() + 3600 * 24 * 365);
setcookie(CS.'['.$name.']', $value, $time, '/', self::$domain, NULL, TRUE);
}
//--------------------------- -----------------------------//
/**
* Удаляет кукис пользователя
* @param string $name
*/
public function unsetCookie($name) {
setcookie(CS.'['.$name.']', '', time()-3600, '/');
}
//--------------------------- -----------------------------//
/**
* Возвращает значение кукиса
* @param string $name
* @return string || false
*/
public function getCookie($name) {
if (isset($_COOKIE[CS][$name])) {
return $_COOKIE[CS][$name];
} else {
return false;
}
}
//--------------------------- -----------------------------//
/**
* Сохраняет переменную в сессии
* @param str $param Название переменной
* @param mixed $value Значение
* @return bool
*/
public static function setSession($param, $value) {
$_SESSION[SS][$param] = $value;
return true;
}
//--------------------------- -----------------------------//
/**
* Извлекает переменную из сессии
* @param str $param Название переменной
* @return bool
*/
public static function getSession($param) {
if (isset($_SESSION[SS][$param])) {
return $_SESSION[SS][$param];
} else {
return false;
}
}
//--------------------------- -----------------------------//
/**
* Удаляет переменную из сессии
* @param str $param Название переменной
*/
public static function unsetSession($param) {
unset($_SESSION[SS][$param]);
}
//--------------------------- -----------------------------//
/**
* Добавляет сообщение в сессию
* @param string $message
* @param string $class
*/
public static function addMessage($message, $class = 'error') {
if (!in_array($class, array('info', 'ok', 'error'))) return;
$_SESSION['core_message'][] = array($class, $message);
}
//--------------------------- -----------------------------//
/*
* Возвращает массив сообщений сохраненных в сессии
*/
public static function getMessages() {
if (isset($_SESSION['core_message'])) {
$messages = $_SESSION['core_message'];
} else {
$messages = false;
}
self::clearMessages();
return $messages;
}
//--------------------------- -----------------------------//
/*
* Очищает очередь сообщений сессии
*/
public static function clearMessages() {
unset($_SESSION['core_message']);
}
}
?>