dbXapp
2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Toggle main menu visibility
Loading...
Searching...
No Matches
dbxSession.class.php
Go to the documentation of this file.
1
<?php
2
6
class
dbxSession
{
7
8
Private
function
get_request
() {
9
$request=
''
;
10
if
(isset(
$_SERVER
[
'REQUEST_URI'
])) $request=
$_SERVER
[
'REQUEST_URI'
] ;
11
return
$request;
12
}
13
14
15
Private
function
get_new_session_id
($uid) {
16
$s1=microtime(
true
);
17
$s2=
dbx
()->new_password(8);
18
$sid=md5($uid.
'|'
.$s1.
'|'
.$s2);
19
$sid=substr($sid, 0, 32);
20
return
$sid;
21
}
22
23
Private
function
get_new_session
($uid) {
24
$config
=
dbx
()->get_config(
'dbx'
);
25
$cookie=0;
if
(count($_COOKIE)>0) $cookie=1;
26
$oBrowser =
dbx
()->get_system_obj(
'dbxBrowser'
);
27
$sid=$this->
get_new_session_id
($uid);
28
dbx
()->debug(
"#dbxSession new sessid for user($uid) =($sid)"
);
29
30
$session[
'record'
][
'id'
] = 0;
31
$session[
'record'
][
'create_date'
] = date(
'Y-m-d H:i:s'
);
32
$session[
'record'
][
'create_uid'
] = $uid;
33
$session[
'record'
][
'update_date'
] = date(
'Y-m-d H:i:s'
);
34
$session[
'record'
][
'update_uid'
] = $uid;
35
$session[
'record'
][
'owner'
] = $uid;
36
$session[
'record'
][
'ip'
] = $oBrowser->_ip;
37
$session[
'record'
][
'host'
] = $oBrowser->_host;
38
$session[
'record'
][
'device'
]= $oBrowser->_device;
39
$session[
'record'
][
'robot'
] = $oBrowser->_robot;
40
$session[
'record'
][
'name'
] = $oBrowser->_name;
41
$session[
'record'
][
'ver'
] = $oBrowser->_version;
42
$session[
'record'
][
'os'
] = $oBrowser->_platform;
43
$session[
'record'
][
'width'
] = $oBrowser->_width;
44
$session[
'record'
][
'height'
]= $oBrowser->_height;
45
$session[
'record'
][
'cookie'
]= $cookie;
46
$session[
'record'
][
'userid'
]= $uid;
47
$session[
'record'
][
'sessid'
]= $sid;
48
49
$session[
'record'
][
'request_counter'
]=
'0'
;
50
$session[
'record'
][
'request_last'
] =
''
;
51
$session[
'record'
][
'request_current'
]=
''
;
52
53
$session[
'current_user'
]=$this->
get_current_user
($uid);
54
$session[
'tmp'
]=array();
55
$session[
'remember'
]=array();
56
$session[
'cache'
][
'tpl'
]=array();
57
$session[
'cache'
][
'obj'
]=array();
58
59
// - - - - - - - - - - -
60
61
62
return
$session;
63
}
64
65
66
67
private
function
apply_browser_to_record(&$rec) {
68
$oBrowser =
dbx
()->get_system_obj(
'dbxBrowser'
);
69
70
$rec[
'ip'
] = $oBrowser->_ip;
71
$rec[
'host'
] = $oBrowser->_host;
72
$rec[
'device'
] = $oBrowser->_device;
73
$rec[
'mobile'
] = $oBrowser->_mobile;
74
$rec[
'robot'
] = $oBrowser->_robot;
75
$rec[
'name'
] = $oBrowser->_name;
76
$rec[
'ver'
] = $oBrowser->_version;
77
$rec[
'os'
] = $oBrowser->_platform;
78
$rec[
'width'
] = $oBrowser->_width;
79
$rec[
'height'
] = $oBrowser->_height;
80
$rec[
'cookie'
] = count($_COOKIE)>0 ? 1 : 0;
81
}
82
83
84
85
public
function
get_current_user
($uid = 0) {
86
// #todo cfg ob user 1 (guest) db oder nicht !
87
$current_user = [
88
'id'
=> 0,
89
'uname'
=>
'guest'
,
90
'roles'
=>
'guest'
,
91
'email'
=>
''
,
92
'name'
=>
'Guest'
,
93
'design'
=>
'default'
,
94
'color'
=>
'default'
,
95
'language'
=>
'de'
,
96
'edit'
=> 0
97
];
98
99
if
($uid) {
100
$db
=
dbx
()->get_system_obj(
'dbxDB'
);
101
$user_rec =
$db
->select1(
'dbxUser'
, $uid , verify_access: 0);
102
103
if
(!is_array($user_rec) || empty($user_rec[
'id'
])) {
104
$user_rec = array();
105
}
106
107
if
(is_array($user_rec) && !empty($user_rec[
'id'
])) {
108
$current_user = [
109
'id'
=> (int)$user_rec[
'id'
],
110
'uname'
=> $user_rec[
'uname'
],
111
'roles'
=> $user_rec[
'roles'
],
112
'email'
=> $user_rec[
'email'
],
113
'name'
=> $user_rec[
'name'
],
114
'design'
=> $user_rec[
'design'
],
115
'color'
=> $user_rec[
'color'
],
116
'language'
=> $user_rec[
'language'
],
117
'edit'
=> $user_rec[
'edit'
]
118
];
119
}
120
}
121
122
dbx
()->debug(
"###CURRENT-USER###"
, $current_user);
123
return
$current_user;
124
}
125
126
127
132
public
function
load_session
() {
133
dbx
()->timer(
'session-browser'
,
'Session browser'
);
134
$sok=
false
;
135
$oBrowser=
dbx
()->get_system_obj(
'dbxBrowser'
);
136
$ip = $oBrowser->_ip;
137
$host= $oBrowser->_host;
138
if
(isset($_SESSION[
'dbx'
][
'record'
])) {
139
if
(isset($_SESSION[
'dbx'
][
'current_user'
][
'id'
])) {
140
$sok=1;
141
if
($_SESSION[
'dbx'
][
'record'
][
'ip'
] != $ip ) $sok=
false
;
142
if
($_SESSION[
'dbx'
][
'record'
][
'host'
] != $host) $sok=
false
;
143
}
144
}
145
146
147
if
(!$sok) {
148
dbx
()->timer(
'session-new'
,
'Session create new'
);
149
$_SESSION[
'dbx'
] =$this->
get_new_session
(0);
150
dbx
()->debug(
"#### Create new session #### "
);
151
dbx
()->timer(
'session-new'
);
152
}
153
$this->
clean_session
();
154
155
156
157
dbx
()->timer(
'session-browser'
);
158
}
159
public
function
clean_session
() {
160
$cache =
dbx
()->get_config(
'dbx'
,
'cache'
);
161
//$cache2 = dbx()->get_system_var('dbx_cache',0);
162
//dbx_debug("##clear session cache=($cache)");
163
$_SESSION[
'dbx'
][
'tmp'
] =array();
164
$_SESSION[
'dbx'
][
'norep'
]=array();
165
if
(!$cache) {
166
//dbx_debug("clear cache config");
167
$_SESSION[
'dbx'
][
'config'
]=array();
168
$_SESSION[
'dbx'
][
'cache'
]=array();
169
}
170
}
171
172
public
function
save_session
($rec=1) {
173
$session_db=
dbx
()->get_config(
'dbx'
,
'session_db'
);
174
dbx
()->debug(
"#SESSION db write =($session_db)"
);
175
if
($session_db) {
176
177
178
$install=
dbx
()->get_system_var(
'dbx_install'
,0);
179
180
$design =
dbx
()->get_system_var(
'dbx_activ_design'
,
'default'
);
181
$page =
dbx
()->get_system_var(
'dbx_activ_page'
,
'default'
);
182
183
$modul =
dbx
()->get_system_var(
'dbx_master_modul'
);
184
$run1 =
dbx
()->get_system_var(
'dbx_master_action'
);
185
$run2 =
dbx
()->get_system_var(
'dbx_run2'
,
''
);
186
$uid =
dbx
()->user();
187
188
189
if
(isset($_SESSION[
'dbx'
][
'record'
])) {
190
$_SESSION[
'dbx'
][
'record'
][
'request_counter'
] = ((int)($_SESSION[
'dbx'
][
'record'
][
'request_counter'
] ?? 0)) + 1;
191
$_SESSION[
'dbx'
][
'record'
][
'request_last'
] = (string)($_SESSION[
'dbx'
][
'record'
][
'request_current'
] ??
''
);
192
$_SESSION[
'dbx'
][
'record'
][
'request_current'
] = $this->
get_request
();
193
$rec=$_SESSION[
'dbx'
][
'record'
];
194
$id =(int)($rec[
'id'
] ?? 0);
195
}
else
{
196
$rec=array();
197
$id = 0;
198
}
199
200
//$this->apply_browser_to_record($rec);
201
202
$rec[
'update_date'
]=date(
'Y-m-d H:i:s'
);
203
$rec[
'create_uid'
] =$uid;
204
$rec[
'update_uid'
] =$uid;
205
$rec[
'owner'
] =$uid;
206
$rec[
'userid'
] =$uid;
207
$rec[
'design'
] =$design;
208
$rec[
'page'
] =$page;
209
$rec[
'modul'
] =$modul;
210
$rec[
'run1'
] =$run1;
211
$rec[
'run2'
] =$run2;
212
$rec[
'color'
] =
dbx
()->get_system_var(
'dbx_color'
,
'default'
);
213
$rec[
'language'
] =
dbx
()->get_system_var(
'dbx_lng'
,
'de'
);
214
$rec[
'edit'
] =
dbx
()->get_system_var(
'dbx_edit'
,
'0'
);
215
216
217
218
if
(!$install && $session_db) {
219
$oDB=
dbx
()->get_system_obj(
'dbxDB'
);
220
221
//dbx_debug("#### SESSION SAVE ID=($id) User=($uid) rec=($id) #####",$rec);
222
223
$sessid = (string)($rec[
'sessid'
] ??
''
);
224
225
if
($id) {
226
$ok=$oDB->update(
'dbxSession'
,$rec,$id,0,1,0,0);
227
if
(!$ok) {
228
$id=0;
229
} elseif ((
int
)($oDB->_update_count ?? 0) === 0 && (
int
)$oDB->count(
'dbxSession'
,
"id="
. (
int
)$id) <= 0) {
230
$id=0;
231
}
232
}
233
234
if
(!$id && $sessid !==
''
) {
235
$server
= $oDB->get_dd_server(
'dbxSession'
);
236
$where =
"sessid='"
. $oDB->escape($sessid,
$server
) .
"'"
;
237
$old = $oDB->select1(
'dbxSession'
, $where, array(
'id'
), 0);
238
$oldId = is_array($old) ? (int)($old[
'id'
] ?? 0) : 0;
239
240
if
($oldId > 0) {
241
$ok=$oDB->update(
'dbxSession'
,$rec,$oldId,0,1,0,0);
242
if
($ok) $id=$oldId;
243
}
244
}
245
246
if
(!$id) {
// new session
247
$ok=$oDB->insert(
'dbxSession'
,$rec,0,1,0,0);
248
$id=(int)$oDB->_insert_id;
249
}
250
}
251
252
$rec[
'id'
] = (int)$id;
253
$_SESSION[
'dbx'
][
'record'
]=$rec;
254
dbx
()->debug(
"#SESSIOM-PHP-ID"
,$_SESSION[
'dbx'
][
'record'
][
'id'
]);
255
}
// session_db
256
}
257
258
259
260
public
function
logout
($userid,$kill=1) {
261
dbx
()->debug(
"#SESSION# LOGOUT Kill=($kill) userid=($userid)"
);
262
263
if
(isset($_SESSION[
'dbx'
][
'record'
])) {
264
$_SESSION[
'dbx'
][
'record'
][
'owner'
] = 0;
265
$_SESSION[
'dbx'
][
'record'
][
'userid'
] = 0;
266
}
267
$_SESSION[
'dbx'
][
'current_user'
]=$this->
get_current_user
(0);
268
269
if
($kill) $GLOBALS[
'dbx_session_destroy_pending'
] = 1;
270
}
271
272
public
function
destroy_php_session
() {
273
$GLOBALS[
'dbx_session_destroyed'
] = 1;
274
275
if
(session_status() === PHP_SESSION_ACTIVE) {
276
$_SESSION = array();
277
278
if
(ini_get(
'session.use_cookies'
)) {
279
$params = session_get_cookie_params();
280
setcookie(
281
session_name(),
282
''
,
283
time() - 42000,
284
$params[
'path'
] ??
'/'
,
285
$params[
'domain'
] ??
''
,
286
$params[
'secure'
] ??
false
,
287
$params[
'httponly'
] ??
false
288
);
289
}
290
291
session_destroy();
292
}
293
294
dbx_delete_cookie(
'dbXwebApp'
);
295
}
296
297
public
function
login
($uid,$remember=0) {
298
dbx
()->debug(
"#SESSION# LOGIN"
);
299
if
(session_status() === PHP_SESSION_ACTIVE && !headers_sent()) {
300
session_regenerate_id(
true
);
301
}
302
$new_sessid =$this->
get_new_session_id
($uid);
303
$current_user=$this->
get_current_user
($uid);
304
$_SESSION[
'dbx'
][
'record'
][
'owner'
] = $uid;
305
$_SESSION[
'dbx'
][
'record'
][
'userid'
] = $uid;
306
$_SESSION[
'dbx'
][
'record'
][
'update_uid'
] = $uid;
307
$_SESSION[
'dbx'
][
'record'
][
'create_uid'
] = $uid;
308
$_SESSION[
'dbx'
][
'record'
][
'sessid'
] = $new_sessid;
309
$_SESSION[
'dbx'
][
'current_user'
] = $current_user;
310
//$_SESSION=array();
311
if
($remember)
dbx
()->set_cookie_var(
'dbXwebApp'
,
'session_id'
,$new_sessid);
// #ToDo
312
dbx
()->debug(
"#SESSION# LOGIN ($uid) Sessid=($new_sessid)"
,);
313
314
}
315
316
317
}
// Class
dbxSession
Summary of dbxSession.
Definition
dbxSession.class.php:6
dbxSession\get_request
Private get_request()
Definition
dbxSession.class.php:8
dbxSession\save_session
save_session($rec=1)
Definition
dbxSession.class.php:172
dbxSession\get_new_session
Private get_new_session($uid)
Definition
dbxSession.class.php:23
dbxSession\destroy_php_session
destroy_php_session()
Definition
dbxSession.class.php:272
dbxSession\clean_session
clean_session()
Definition
dbxSession.class.php:159
dbxSession\login
login($uid, $remember=0)
Definition
dbxSession.class.php:297
dbxSession\logout
logout($userid, $kill=1)
Definition
dbxSession.class.php:260
dbxSession\get_current_user
get_current_user($uid=0)
Definition
dbxSession.class.php:85
dbxSession\load_session
load_session()
Summary of load_session.
Definition
dbxSession.class.php:132
dbxSession\get_new_session_id
Private get_new_session_id($uid)
Definition
dbxSession.class.php:15
$config
$config['version']
Definition
config.php:2
dbx
DBX schema administration.
$db
$db
Definition
run_context_help_provision.php:38
$server
$server
Definition
run_context_help_provision.php:39
$_SERVER
$_SERVER['REQUEST_URI']
Definition
run_context_help_provision.php:4
dbx
include
dbxSession.class.php
Generated by
1.17.0