Joostina CMS / CMF v2.* API
  • Docs
  • Package
  • Class
  • Tree
  • Todo
Overview

Packages

  • Components
    • Acls
      • Models
        • Admin
        • Site
    • BlogCategory
      • Models
        • Admin
        • Site
    • Blogs
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Coder
      • Controllers
        • Admin
      • Models
        • Admin
    • Comments
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • CommentsCounter
      • Models
        • Admin
        • Site
    • Mainpage
      • Controllers
        • Site
    • News
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Pages
      • Controllers
        • Admin
        • Site
      • Models
        • Site
    • Search
      • Controllers
        • Site
    • Site
      • Controllers
        • Admin
        • Site
    • Sitemap
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
    • Test
      • Controllers
        • Site
    • Torrents
      • Controllers
        • Site
    • Users
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
  • Compression
  • Core
    • Libraries
      • Arhive
      • Array
      • Attached
      • Autoadmin
      • Autoloader
      • Benchmark
      • Breadcrumbs
      • Cache
      • Config
      • Cookie
      • Csrf
      • Database
        • Drivers
          • Interfaces
      • Datetime
      • Debug
      • Editor
      • Events
      • File
      • Filter
      • Flashmessage
      • Folder
      • Hit
      • Html
      • Image
      • Inflector
      • Inputfilter
      • Libraries
      • Mail
      • Module
      • Nestedset
      • Pager
      • Pages
      • Params
      • Randomizer
      • Request
      • RobotLoader
      • Route
      • Security
      • Session
      • Static
      • String
      • Text
      • Trash
      • Validate
  • Email
  • Extra
    • Libraries
      • Basket
  • Joostina
    • Controller
    • Core
    • Document
  • JSMin
  • Libraries
    • Extra
      • Basket
        • Models
          • Site
  • None
  • Plugins
    • Autoadmin
    • Editor
    • Sitemap
  • SimpleMail
  • Vendors
    • Libraries
      • Email

Classes

  • joosSession
  1: <?php defined('_JOOS_CORE') or exit();
  2: 
  3: /**
  4:  * Работа с сессиями
  5:  *
  6:  * @version    1.0
  7:  * @package    Core\Libraries
  8:  * @subpackage Session
  9:  * @category   Libraries
 10:  * @author     Joostina Team <info@joostina.ru>
 11:  * @copyright  (C) 2007-2012 Joostina Team
 12:  * @license    MIT License http://www.opensource.org/licenses/mit-license.php
 13:  * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
 14:  *
 15:  * */
 16: class joosSession
 17: {
 18:     private static $_userstate = null;
 19: 
 20:     private static function start()
 21:     {
 22:         if (!isset($_SESSION)) {
 23:             $session_name = self::get_session_name();
 24: 
 25:             session_name($session_name);
 26:             session_start();
 27:         }
 28:     }
 29: 
 30:     /**
 31:      * Получение уникального названия сессии для пользователя
 32:      *
 33:      * @return string
 34:      */
 35:     public static function get_session_name()
 36:     {
 37:         $user_ip = joosRequest::user_ip();
 38:         $user_browser = joosRequest::server('HTTP_USER_AGENT');
 39: 
 40:         return joosCSRF::hash($user_ip . $user_browser);
 41:     }
 42: 
 43:     public static function get($key, $default = null)
 44:     {
 45:         self::start();
 46: 
 47:         return joosRequest::session($key, $default);
 48:     }
 49: 
 50:     public static function set($key, $value)
 51:     {
 52:         self::start();
 53: 
 54:         return $_SESSION[$key] = $value;
 55:     }
 56: 
 57:     public static function session_cookie_name()
 58:     {
 59:         $syte = str_replace(array('http://', 'https://'), '', JPATH_SITE);
 60: 
 61:         return md5('site' . $syte);
 62:     }
 63: 
 64:     /**
 65:      * Получение уникального ключа для значения пользовательской сессии
 66:      *
 67:      * @static
 68:      * @param  null   $hash_key
 69:      * @return string
 70:      *
 71:      * @todo добавить возможность работы через прокси, когда у пользователя меняется конечный IP, но единый IP прокси
 72:      */
 73:     public static function session_cookie_value($hash_key = null)
 74:     {
 75:         $user_ip = joosRequest::user_ip();
 76:         $user_browser = joosRequest::server('HTTP_USER_AGENT', 'none');
 77: 
 78:         $type = joosConfig::get2('session', 'type', 2);
 79:         switch ($type) {
 80:             case 1:
 81:                 $value = md5($hash_key . $user_ip);
 82:                 break;
 83: 
 84:             default:
 85:                 $value = joosCSRF::hash($hash_key . $user_ip . $user_browser);
 86:                 break;
 87:         }
 88: 
 89:         return $value;
 90:     }
 91: 
 92:     public static function init_user_state()
 93:     {
 94:         if (self::$_userstate === null && isset($_SESSION['session_userstate'])) {
 95:             self::$_userstate = &$_SESSION['session_userstate'];
 96:         } else {
 97:             self::$_userstate = null;
 98:         }
 99:     }
100: 
101:     public static function get_user_state_from_request($var_name, $req_name, $var_default = null)
102:     {
103:         if (is_array(self::$_userstate)) {
104:             if (isset($_REQUEST[$req_name])) {
105:                 self::set_user_state($var_name, $_REQUEST[$req_name]);
106:             } elseif (!isset(self::$_userstate[$var_name])) {
107:                 self::set_user_state($var_name, $var_default);
108:             }
109: 
110:             self::$_userstate[$var_name] = joosInputFilter::instance()->process(self::$_userstate[$var_name]);
111: 
112:             return self::$_userstate[$var_name];
113:         } else {
114:             return null;
115:         }
116:     }
117: 
118:     private static function set_user_state($var_name, $var_value)
119:     {
120:         // TODO сюда надо isset
121:         if (is_array(self::$_userstate)) {
122:             self::$_userstate[$var_name] = $var_value;
123:         }
124:     }
125: 
126: }
127: 
Joostina CMS / CMF v2.* API API documentation generated by ApiGen 2.6.1 – Template adapted by @olvlv and Joostina Team