thomascube
2006-09-01 fda695f29732f5e5bcaa55e7e7abd090d2359927
program/include/session.inc
@@ -45,7 +45,7 @@
  if ($sql_arr = $DB->fetch_assoc($sql_result))
    {
    $SESS_CHANGED = $sql_arr['changed'];
    $SESS_CHANGED = mktime(); //$sql_arr['changed'];
    if (strlen($sql_arr['vars']))
      return $sql_arr['vars'];
@@ -59,7 +59,7 @@
function sess_write($key, $vars)
  {
  global $DB;
  $sql_result = $DB->query("SELECT 1
                            FROM ".get_table_name('session')."
                            WHERE  sess_id=?",
@@ -70,7 +70,7 @@
    session_decode($vars);
    $DB->query("UPDATE ".get_table_name('session')."
                SET    vars=?,
                       changed=now()
                       changed=".$DB->now()."
                WHERE  sess_id=?",
                $vars,
                $key);
@@ -79,10 +79,12 @@
    {
    $DB->query("INSERT INTO ".get_table_name('session')."
                (sess_id, vars, ip, created, changed)
                VALUES (?, ?, ?, now(), now())",
                VALUES (?, ?, ?, ".$DB->now().", ".$DB->now().")",
                $key,
                $vars,
                $_SERVER['REMOTE_ADDR']);
    }
  return TRUE;
@@ -102,7 +104,8 @@
  $DB->query("DELETE FROM ".get_table_name('session')."
              WHERE sess_id=?",
              $key);
  rcmail_clear_session_temp($key);
  return TRUE;
  }
@@ -115,7 +118,7 @@
  // get all expired sessions  
  $sql_result = $DB->query("SELECT sess_id
                            FROM ".get_table_name('session')."
                            WHERE ".$DB->unixtimestamp('now()')."-".$DB->unixtimestamp('created')." > ?",
                            WHERE ".$DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed')." > ?",
                            $maxlifetime);
                                   
  $a_exp_sessions = array();
@@ -134,6 +137,13 @@
                WHERE sess_id IN ('".join("','", $a_exp_sessions)."')");
    }
  // remove session specific temp dirs
  foreach ($a_exp_sessions as $key)
    rcmail_clear_session_temp($key);
  // also run message cache GC
  rcmail_message_cache_gc();
  return TRUE;
  }