46 global $dolibarr_main_db_type, $dolibarr_main_db_host;
47 global $dolibarr_main_db_user, $dolibarr_main_db_pass, $dolibarr_main_db_name, $dolibarr_main_db_port;
49 global $dolibarr_session_db_type, $dolibarr_session_db_host;
50 global $dolibarr_session_db_user, $dolibarr_session_db_pass, $dolibarr_session_db_name, $dolibarr_session_db_port;
52 if (empty($dolibarr_session_db_type)) {
53 $dolibarr_session_db_type = $dolibarr_main_db_type;
55 if (empty($dolibarr_session_db_host)) {
56 $dolibarr_session_db_host = $dolibarr_main_db_host;
58 if (empty($dolibarr_session_db_user)) {
59 $dolibarr_session_db_user = $dolibarr_main_db_user;
61 if (empty($dolibarr_session_db_pass)) {
62 $dolibarr_session_db_pass = $dolibarr_main_db_pass;
64 if (empty($dolibarr_session_db_name)) {
65 $dolibarr_session_db_name = $dolibarr_main_db_name;
67 if (empty($dolibarr_session_db_port)) {
68 $dolibarr_session_db_port = $dolibarr_main_db_port;
71 $dbsession =
getDoliDBInstance($dolibarr_session_db_type, $dolibarr_session_db_host, $dolibarr_session_db_user, $dolibarr_session_db_pass, $dolibarr_session_db_name, (
int) $dolibarr_session_db_port);
85 global $sessionlastvalueread;
86 global $sessionidfound;
88 $sql =
"SELECT session_id, session_variable FROM ".MAIN_DB_PREFIX.
"session";
89 $sql .=
" WHERE session_id = '".$dbsession->escape($sess_id).
"'";
92 $resql = $dbsession->query($sql);
93 $num_rows = $dbsession->num_rows($resql);
96 $sessionlastvalueread =
'';
101 $obj = $dbsession->fetch_object($resql);
102 $sessionlastvalueread = $obj->session_variable;
103 $sessionidfound = $obj->session_id;
106 return $obj->session_variable;
120 global $dbsession, $user;
121 global $sessionlastvalueread;
122 global $sessionidfound;
129 if ($sessionlastvalueread != $val) {
132 if (empty($sessionidfound)) {
133 if ((
int) ini_get(
'session.gc_probability') == 0) {
135 $max_lifetime = max(
getDolGlobalInt(
'MAIN_SESSION_TIMEOUT'), (
int) ini_get(
'session.gc_maxlifetime'));
136 $delete_query =
"DELETE FROM ".MAIN_DB_PREFIX.
"session";
137 $delete_query .=
" WHERE last_accessed < '".$dbsession->idate($time_stamp - $max_lifetime).
"'";
138 $dbsession->query($delete_query);
142 $insert_query =
"INSERT INTO ".MAIN_DB_PREFIX.
"session";
143 $insert_query .=
"(session_id, session_variable, date_creation, last_accessed, fk_user, remote_ip, user_agent)";
144 $insert_query .=
" VALUES ('".$dbsession->escape($sess_id).
"', '".$dbsession->escape($val).
"', '".$dbsession->idate($time_stamp).
"', '".$dbsession->idate($time_stamp).
"', 0, '".$dbsession->escape(
getUserRemoteIP()).
"', '".$dbsession->escape(substr($_SERVER[
'HTTP_USER_AGENT'], 0, 255)).
"')";
146 $result = $dbsession->query($insert_query);
152 if ($sessionidfound != $sess_id) {
154 dol_print_error($dbsession,
'Oops sess_id received in dolSessionWrite differs from the cache value $sessionidfound. How can this happen ?');
176 $update_query =
"UPDATE ".MAIN_DB_PREFIX.
"session";
177 $update_query .=
" SET session_variable = '".$dbsession->escape($val).
"',";
178 $update_query .=
" last_accessed = '".$dbsession->idate($time_stamp).
"',";
179 $update_query .=
" fk_user = ".(int) (!empty($user->id) ? $user->id : 0).
",";
180 $update_query .=
" remote_ip = '".$dbsession->escape(
getUserRemoteIP()).
"',";
181 $update_query .=
" user_agent = '".$dbsession->escape($_SERVER[
'HTTP_USER_AGENT']).
"'";
182 $update_query .=
" WHERE session_id = '".$dbsession->escape($sess_id).
"'";
184 $result = $dbsession->query($update_query);
266 $arrayofsessions = [];
267 $sql =
"SELECT s.session_id, s.session_variable, s.fk_user, s.date_creation, s.last_accessed, s.remote_ip, s.user_agent";
269 $sql .=
" FROM ".MAIN_DB_PREFIX.
"session as s";
270 $sql .=
" LEFT JOIN ".MAIN_DB_PREFIX.
"user as u ON u.rowid=s.fk_user";
271 $sql .=
" LIMIT 500";
272 $resql = $dbsession->query($sql);
273 while ($resql && $obj = $dbsession->fetch_object($resql)) {
274 $arrayofsessions[$obj->session_id] = [
275 "login" => (string) $obj->login,
276 "age" =>
dol_now() - (int) $dbsession->jdate($obj->date_creation),
277 "creation" => $dbsession->idate($obj->date_creation),
278 "modification" => $dbsession->idate($obj->last_accessed),
279 "remote_ip" => $obj->remote_ip,
280 "user_agent" => $obj->user_agent,
285 return $arrayofsessions;
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
getDoliDBInstance($type, $host, $user, $pass, $name, $port)
Return a DoliDB instance (database handler).