1: <?php defined('_JOOS_CORE') or exit();
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 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: 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: 68: 69: 70: 71: 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:
121: if (is_array(self::$_userstate)) {
122: self::$_userstate[$var_name] = $var_value;
123: }
124: }
125:
126: }
127: