X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=inc%2Fsession-functions.php;h=8feefa3302c17793a901c93630028fd90add42fb;hb=150ed402878985508f10f4e06d25831e0fb3a1f8;hp=a2d1e8c22bc8b2f623b35ee4b26cd1f485c47c2d;hpb=7b0f17cd637e388049d2167811e4332cec1e979b;p=mailer.git
diff --git a/inc/session-functions.php b/inc/session-functions.php
index a2d1e8c22b..8feefa3302 100644
--- a/inc/session-functions.php
+++ b/inc/session-functions.php
@@ -1,7 +1,7 @@
\n";
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UNSET:' . $var . '=' . getSession($var));
unset($_SESSION[$var]);
- return session_unregister($var);
- } elseif (("".$value."" != '') && (!isSessionVariableSet($var))) {
+ if (isPhpVersionEqualNewer('5.3.0')) {
+ // session_unregister() is deprecated as of 5.3.0
+ return TRUE;
+ } else {
+ // PHP version < 5.3.0
+ return session_unregister($var);
+ }
+ } elseif (('' . $value . '' != '') && (!isSessionVariableSet($var))) {
// Set session
- //* DEBUG: */ echo "SET:".$var.'='.$value."
\n";
- $_SESSION[$var] = $value;
- return session_register($var);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SET:' . $var . '=' . $value);
+ $_SESSION[$var] = $value;
+ if (isPhpVersionEqualNewer('5.3.0')) {
+ // session_unregister() is deprecated as of 5.3.0
+ return TRUE;
+ } else {
+ // PHP version < 5.3.0
+ return session_register($var);
+ }
} elseif (!empty($value)) {
// Update session
- //* DEBUG: */ echo "UPDATE:".$var.'='.$value."
\n";
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UPDATE:' . $var . '=' . $value);
$_SESSION[$var] = $value;
- return true;
+ return TRUE;
}
// Ignored (but valid)
- //* DEBUG: */ echo "IGNORED:".$var.'='.$value."
\n";
- return true;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'IGNORED:' . $var . '=' . $value);
+ return TRUE;
}
-// Check wether a session variable is set
+// Check whether a session variable is set
function isSessionVariableSet ($var) {
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):var={$var}
\n";
+ // Warning: DO NOT call logDebugMessage() from here, this will cause an endless loop
return (isset($_SESSION[$var]));
}
-// Returns wether the value of the session variable or NULL if not set
+// Returns whether the value of the session variable or NULL if not set
function getSession ($var) {
- // Default is not found! ;-)
- $value = null;
-
- // Is the variable there or cached values?
- if (isset($GLOBALS['cache_array']['session'][$var])) {
- // Get cached value (skips a lot SQL_ESCAPE() calles!
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."): ".$var."-CACHE!
\n";
- $value = $GLOBALS['cache_array']['session'][$var];
- } elseif (isSessionVariableSet($var)) {
- // Then get it secured!
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."): ".$var."-RESOLVE!
\n";
- $value = SQL_ESCAPE($_SESSION[$var]);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'var=' . $var . ' - CALLED!');
+ // Default is not found ;-)
+ $value = NULL;
- // Cache the value
- $GLOBALS['cache_array']['session'][$var] = $value;
+ // Is the variable there?
+ if (isSessionVariableSet($var)) {
+ // Then get it secured!
+ if ((isInstaller()) || (!isSqlLinkUp())) {
+ // Secure string without escaping (and compiling)
+ $value = secureString($_SESSION[$var]);
+ } else {
+ // Escape string with SQL driver
+ $value = sqlEscapeString($_SESSION[$var]);
+ }
} // END - if
// Return the value
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $var . '=' . $value . ' - EXIT!');
return $value;
}
+// Get whole session array
+function getSessionArray () {
+ // Simply return it
+ return $_SESSION;
+}
+
// Destroy user session
-function destroyUserSession () {
+function destroyMemberSession ($destroy = FALSE) {
// Reset userid
- setUserId(0);
+ initMemberId();
// Remove all user data from session
- return ((setSession('userid', '')) && (setSession('u_hash', '')));
+ if ($destroy === TRUE) {
+ // Destroy whole session
+ return destroySession();
+ } else {
+ return ((setSession('userid', '')) && (setSession('u_hash', '')));
+ }
}
// Destroys the admin session
-function destroyAdminSession ($destroy = true) {
+function destroyAdminSession ($destroy = FALSE) {
// Kill maybe existing session variables including array elements
- setSession('admin_login', '');
- setSession('admin_md5' , '');
- setSession('admin_last' , '');
- setSession('admin_to' , '');
-
- // Destroy session and return status
- if ($destroy) {
- return session_destroy();
+ setAdminId(0);
+ setAdminMd5('');
+ setAdminLast(0);
+
+ // Remove "cache"
+ unset($GLOBALS['isAdmin']);
+
+ // Destroy session if requested and return status
+ if ($destroy === TRUE) {
+ return destroySession();
+ } // END - if
+
+ // All fine if the session shall not really be destroyed
+ return TRUE;
+}
+
+// Destroys session and resets some "caches"
+function destroySession () {
+ // Unset "cache"
+ unset($GLOBALS['isValidSession']);
+
+ // Destroy session
+ return session_destroy();
+}
+
+// Checks whether the session is valid
+function isValidSession () {
+ // Is there cache?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Then determine it
+ $GLOBALS[__FUNCTION__] = ((isset($GLOBALS['valid_session'])) && ($GLOBALS['valid_session'] === TRUE) && (isset($_COOKIE[session_name()])));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Checks whether all given session data is set
+function isSessionDataSet ($sessionData) {
+ // Default is set
+ $isset = TRUE;
+
+ // Check all
+ foreach ($sessionData as $key) {
+ // Is this element set?
+ $isset = (($isset) && (isSessionVariableSet($key)));
+ } // END - foreach
+
+ // Return result
+ return $isset;
+}
+
+// Initializes session
+function initSession () {
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CALLED!');
+
+ // Is ext-sql_patches there and newer?
+ if (isExtensionInstalledAndNewer('sql_patches', '0.5.3')) {
+ // Set session save path if set
+ if ((isConfigEntrySet('session_save_path')) && (getConfig('session_save_path') != '')) {
+ // Please make sure this valid!
+ session_save_path(getConfig('session_save_path'));
+ } // END - if
+ } // END - if
+
+ // Is a session id there?
+ if (!isValidSession()) {
+ // Start the session
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Initializing session ...');
+ $GLOBALS['valid_session'] = session_start();
+ $GLOBALS['isValidSession'] = TRUE;
+
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'session_id=' . session_id());
} // END - if
- // All fine if we shall not really destroy the session
- return true;
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'EXIT!');
}
// [EOF]