17 $s2=
dbx()->new_password(8);
18 $sid=md5($uid.
'|'.$s1.
'|'.$s2);
19 $sid=substr($sid, 0, 32);
25 $cookie=0;
if (count(
$_COOKIE)>0) $cookie=1;
26 $oBrowser =
dbx()->get_system_obj(
'dbxBrowser');
28 dbx()->debug(
"#dbxSession new sessid for user($uid) =($sid)");
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;
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;
49 $session[
'record'][
'request_counter']=
'0';
50 $session[
'record'][
'request_last'] =
'';
51 $session[
'record'][
'request_current']=
'';
67 private function apply_browser_to_record(&$rec) {
68 $oBrowser =
dbx()->get_system_obj(
'dbxBrowser');
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;
93 'design' =>
'default',
100 $db =
dbx()->get_system_obj(
'dbxDB');
101 $user_rec =
$db->select1(
'dbxUser', $uid , verify_access: 0);
103 if (!is_array($user_rec) || empty($user_rec[
'id'])) {
107 if (is_array($user_rec) && !empty($user_rec[
'id'])) {
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']
122 dbx()->debug(
"###CURRENT-USER###", $current_user);
123 return $current_user;
133 dbx()->timer(
'session-browser',
'Session browser');
135 $oBrowser=
dbx()->get_system_obj(
'dbxBrowser');
136 $ip = $oBrowser->_ip;
137 $host= $oBrowser->_host;
139 if (isset(
$_SESSION[
'dbx'][
'current_user'][
'id'])) {
141 if (
$_SESSION[
'dbx'][
'record'][
'ip'] != $ip ) $sok=
false;
142 if (
$_SESSION[
'dbx'][
'record'][
'host'] != $host) $sok=
false;
148 dbx()->timer(
'session-new',
'Session create new');
150 dbx()->debug(
"#### Create new session #### ");
151 dbx()->timer(
'session-new');
157 dbx()->timer(
'session-browser');
160 $cache =
dbx()->get_config(
'dbx',
'cache');
173 $session_db=
dbx()->get_config(
'dbx',
'session_db');
174 $session_db_guest=(int)
dbx()->get_config(
'dbx',
'session_db_guest',0) === 1;
175 $uid=(int)
dbx()->user();
176 $existingId=(int)(
$_SESSION[
'dbx'][
'record'][
'id'] ?? 0);
177 if ($session_db && !$session_db_guest && $uid <= 0 && $existingId <= 0) {
181 dbx()->debug(
'#SESSION db guest write skipped');
184 dbx()->debug(
"#SESSION db write =($session_db)");
188 $install=
dbx()->get_system_var(
'dbx_install',0);
190 $design =
dbx()->get_system_var(
'dbx_activ_design',
'default');
191 $page =
dbx()->get_system_var(
'dbx_activ_page',
'default');
193 $modul =
dbx()->get_system_var(
'dbx_master_modul');
194 $run1 =
dbx()->get_system_var(
'dbx_master_action');
195 $run2 =
dbx()->get_system_var(
'dbx_run2',
'');
200 $_SESSION[
'dbx'][
'record'][
'request_counter'] = ((int)(
$_SESSION[
'dbx'][
'record'][
'request_counter'] ?? 0)) + 1;
201 $_SESSION[
'dbx'][
'record'][
'request_last'] = (string)(
$_SESSION[
'dbx'][
'record'][
'request_current'] ??
'');
204 $id =(int)($rec[
'id'] ?? 0);
212 $rec[
'update_date']=date(
'Y-m-d H:i:s');
213 $rec[
'create_uid'] =$uid;
214 $rec[
'update_uid'] =$uid;
216 $rec[
'userid'] =$uid;
219 $rec[
'modul'] =$modul;
222 $rec[
'color'] =
dbx()->get_system_var(
'dbx_color',
'default');
223 $rec[
'language'] =
dbx()->get_system_var(
'dbx_lng' ,
'de');
224 $rec[
'edit'] =
dbx()->get_system_var(
'dbx_edit' ,
'0');
228 if (!$install && $session_db) {
229 $oDB=
dbx()->get_system_obj(
'dbxDB');
233 $sessid = (string)($rec[
'sessid'] ??
'');
236 $ok=$oDB->update(
'dbxSession',$rec,$id,0,1,0,0);
239 } elseif ((
int)($oDB->_update_count ?? 0) === 0 && (
int)$oDB->count(
'dbxSession',
"id=" . (
int)$id) <= 0) {
244 if (!$id && $sessid !==
'') {
245 $server = $oDB->get_dd_server(
'dbxSession');
246 $where =
"sessid='" . $oDB->escape($sessid,
$server) .
"'";
247 $old = $oDB->select1(
'dbxSession', $where, array(
'id'), 0);
248 $oldId = is_array($old) ? (int)($old[
'id'] ?? 0) : 0;
251 $ok=$oDB->update(
'dbxSession',$rec,$oldId,0,1,0,0);
257 $ok=$oDB->insert(
'dbxSession',$rec,0,1,0,0);
258 $id=(int)$oDB->_insert_id;
262 $rec[
'id'] = (int)$id;
263 if (!$session_db_guest && (
int)$uid <= 0) {
269 dbx()->debug(
"#SESSIOM-PHP-ID",
$_SESSION[
'dbx'][
'record'][
'id']);
282 if (!in_array(
$method, array(
'GET',
'HEAD'),
true)) {
289 $sessionName = session_name();
290 $incomingSessionId = $sessionName !==
''
291 ? trim((
string)(
$_COOKIE[$sessionName] ??
''))
293 if ($incomingSessionId !==
'') {
294 $activeSessionId = trim((
string)session_id());
295 if ($activeSessionId !==
'' && hash_equals($activeSessionId, $incomingSessionId)) {
302 if ($publicCacheHit) {
306 $browser =
dbx()->get_system_obj(
'dbxBrowser');
307 return is_object($browser) && (int)($browser->_robot ?? 0) === 1;
321 if (session_status() === PHP_SESSION_ACTIVE) {
326 if (!headers_sent()) {
329 header_remove(
'Set-Cookie');
332 dbx()->debug($publicCacheHit
333 ?
'#SESSION ephemeral anonymous full-page-cache guest discarded'
334 :
'#SESSION ephemeral anonymous robot discarded');
340 public function logout($userid,$kill=1) {
341 dbx()->debug(
"#SESSION# LOGOUT Kill=($kill) userid=($userid)");
342 dbx()->invalidate_action_tokens();
346 $_SESSION[
'dbx'][
'record'][
'userid'] = 0;
350 if ($kill)
$GLOBALS[
'dbx_session_destroy_pending'] = 1;
354 $GLOBALS[
'dbx_session_destroyed'] = 1;
356 if (session_status() === PHP_SESSION_ACTIVE) {
359 if (ini_get(
'session.use_cookies')) {
360 $params = session_get_cookie_params();
365 $params[
'path'] ??
'/',
366 $params[
'domain'] ??
'',
367 $params[
'secure'] ??
false,
368 $params[
'httponly'] ??
false
378 public function login($uid,$remember=0) {
379 dbx()->debug(
"#SESSION# LOGIN");
380 if (session_status() === PHP_SESSION_ACTIVE && !headers_sent()) {
381 session_regenerate_id(
true);
383 dbx()->invalidate_action_tokens();
386 $_SESSION[
'dbx'][
'record'][
'owner'] = $uid;
387 $_SESSION[
'dbx'][
'record'][
'userid'] = $uid;
388 $_SESSION[
'dbx'][
'record'][
'update_uid'] = $uid;
389 $_SESSION[
'dbx'][
'record'][
'create_uid'] = $uid;
390 $_SESSION[
'dbx'][
'record'][
'sessid'] = $new_sessid;
391 $_SESSION[
'dbx'][
'current_user'] = $current_user;
393 if ($remember)
dbx()->set_cookie_var(
'dbXwebApp',
'session_id',$new_sessid);
394 dbx()->debug(
"#SESSION# LOGIN ($uid) Sessid=($new_sessid)",);
Private get_new_session($uid)
discard_ephemeral_anonymous_session(bool $publicCacheHit=false)
Entfernt die nur fuer den aktuellen Robot-Request benoetigte PHP-Session.
is_ephemeral_anonymous_session_request(bool $publicCacheHit=false)
Erkennt eine fluechtige Robot-Session ohne eingehenden Session-Cookie.
load_session()
Summary of load_session.
Private get_new_session_id($uid)
user($key='id')
Liest einen Wert des aktuellen Benutzers.
dbx()
Liefert die zentrale dbXapp-API als Singleton.
dbx_delete_cookie($cookie)
$_SERVER['REQUEST_METHOD']
if($resolved !==$expectedBase . 'files/test/') $config
$GLOBALS['dbxMissingResourcesTestApi']
if(trim($second) !=='second') $design
if(!defined( 'IMG_WEBP')) define( 'IMG_WEBP'
DBX schema administration.
if($cinematic===''||!str_contains($cinematic, 'data-dbx-cinema')) $page