thomascube
2008-07-25 6d5dbae53cd4b4b97da0b0c558292a7f1062a524
program/include/session.inc
@@ -26,7 +26,6 @@
  }
function sess_close()
  {
  return TRUE;
@@ -89,9 +88,7 @@
                VALUES (?, ?, ?, ".$DB->now().", ".$DB->now().")",
                $key,
                $vars,
                $_SERVER['REMOTE_ADDR']);
                (string)$_SERVER['REMOTE_ADDR']);
    }
  return TRUE;
@@ -101,15 +98,18 @@
// handler for session_destroy()
function sess_destroy($key)
  {
  global $DB;
  global $DB, $CONFIG;
  
  if ($DB->is_error())
    return FALSE;
  // delete session entries in cache table
  $DB->query("DELETE FROM ".get_table_name('cache')."
              WHERE  session_id=?",
  if ($CONFIG['enable_caching'])
    {
    // delete session entries in cache table
    $DB->query("DELETE FROM ".get_table_name('cache')."
              WHERE session_id=?",
              $key);
    }
              
  $DB->query("DELETE FROM ".get_table_name('session')."
              WHERE sess_id=?",
@@ -122,7 +122,7 @@
// garbage collecting function
function sess_gc($maxlifetime)
  {
  global $DB;
  global $DB, $CONFIG;
  if ($DB->is_error())
    return FALSE;
@@ -137,20 +137,23 @@
  while ($sql_arr = $DB->fetch_assoc($sql_result))
    $a_exp_sessions[] = $sql_arr['sess_id'];
  if (sizeof($a_exp_sessions))
    {
    // delete session cache records
    $DB->query("DELETE FROM ".get_table_name('cache')."
                WHERE  session_id IN ('".join("','", $a_exp_sessions)."')");
    if ($CONFIG['enable_caching'])
      {
        // delete session cache records
   $DB->query("DELETE FROM ".get_table_name('cache')."
                WHERE session_id IN ('".join("','", $a_exp_sessions)."')");
      }
    // delete session records
    $DB->query("DELETE FROM ".get_table_name('session')."
                WHERE sess_id IN ('".join("','", $a_exp_sessions)."')");
    }
  // also run message cache GC
  rcmail_message_cache_gc();
  if ($CONFIG['enable_caching'])
    rcmail_message_cache_gc();
  rcmail_temp_gc();
  return TRUE;
@@ -172,8 +175,13 @@
  sess_destroy(session_id());
  session_id($random);
  $cookie = session_get_cookie_params();
  setcookie(session_name(), $random, $cookie['lifetime'], $cookie['path']);
  $cookie    = session_get_cookie_params();
  $_lifetime = $cookie['lifetime'] ? time() + $cookie['lifetime'] : 0;
  setcookie(session_name(), '', time() - 3600);
  setcookie(session_name(), $random, $_lifetime, $cookie['path'],
    $cookie['domain']);
  return true;
  }