[ PHPXref.com ] [ Generated: Sun Jul 20 19:13:40 2008 ] [ osCommRes 1.2.0 ]
[ Index ]     [ Variables ]     [ Functions ]     [ Classes ]     [ Constants ]     [ Statistics ]

title

Body

[close]

/includes/functions/ -> sessions.php (source)

   1  <?php
   2  /*

   3  

   4    osCommerce, Open Source E-Commerce Solutions

   5    http://www.oscommerce.com

   6  

   7    Copyright (c) 2003 osCommerce

   8    

   9    osCommRes, Services Online

  10    http://www.oscommres.com

  11  

  12    Copyright (c) 2005 osCommRes

  13  

  14    Released under the GNU General Public License

  15  */
  16    if (STORE_SESSIONS == 'mysql') {
  17      if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
  18        $SESS_LIFE = 1440;
  19      }
  20      if (defined("SESSION_TIMEOUT_FRONTEND") && (int)SESSION_TIMEOUT_FRONTEND>=0){
  21          $SESS_LIFE=SESSION_TIMEOUT_FRONTEND*60;
  22      }
  23      function _sess_open($save_path, $session_name) {
  24        return true;
  25      }
  26  
  27      function _sess_close() {
  28        return true;
  29      }
  30  
  31      function _sess_read($key) {
  32        $value_query = tep_db_query("select value from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "' and expiry > '" . time() . "'");
  33        $value = tep_db_fetch_array($value_query);
  34  
  35        if (isset($value['value'])) {
  36          return $value['value'];
  37        }
  38  
  39        return false;
  40      }
  41  
  42      function _sess_write($key, $val) {
  43        global $SESS_LIFE;
  44  
  45        $expiry = time() + $SESS_LIFE;
  46        $value = $val;
  47  
  48        $check_query = tep_db_query("select count(*) as total from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
  49        $check = tep_db_fetch_array($check_query);
  50  
  51        if ($check['total'] > 0) {
  52          return tep_db_query("update " . TABLE_SESSIONS . " set expiry = '" . tep_db_input($expiry) . "', value = '" . tep_db_input($value) . "' where sesskey = '" . tep_db_input($key) . "'");
  53        } else {
  54          return tep_db_query("insert into " . TABLE_SESSIONS . " values ('" . tep_db_input($key) . "', '" . tep_db_input($expiry) . "', '" . tep_db_input($value) . "')");
  55        }
  56      }
  57  
  58      function _sess_destroy($key) {
  59        return tep_db_query("delete from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
  60      }
  61  
  62      function _sess_gc($maxlifetime) {
  63        tep_db_query("delete from " . TABLE_SESSIONS . " where expiry < '" . time() . "'");
  64  
  65        return true;
  66      }
  67  
  68      session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  69    }
  70  
  71    function tep_session_start() {
  72       global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS;
  73        $sane_session_id = true;
  74       if (isset($HTTP_GET_VARS[tep_session_name()])) {
  75  
  76       if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_GET_VARS[tep_session_name()]) == false) {
  77  
  78        unset($HTTP_GET_VARS[tep_session_name()]);
  79  
  80        $sane_session_id = false;
  81  
  82      }
  83  
  84    } elseif (isset($HTTP_POST_VARS[tep_session_name()])) {
  85  
  86      if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_POST_VARS[tep_session_name()]) == false) {
  87  
  88        unset($HTTP_POST_VARS[tep_session_name()]);
  89    
  90         $sane_session_id = false;
  91  
  92      }
  93  
  94    } elseif (isset($HTTP_COOKIE_VARS[tep_session_name()])) {
  95  
  96      if (preg_match('/^[a-zA-Z0-9]+$/', $HTTP_COOKIE_VARS[tep_session_name()]) == false) {
  97  
  98        $session_data = session_get_cookie_params();
  99  
 100        setcookie(tep_session_name(), '', time()-42000, $session_data['path'], $session_data['domain']);
 101        $sane_session_id = false;
 102  
 103      }
 104  
 105    }
 106  
 107    if ($sane_session_id == false) 
 108      {
 109         tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false));
 110      }
 111          return session_start();
 112   }
 113  
 114  
 115    function tep_session_register($variable) {
 116      global $session_started;
 117  
 118      if ($session_started == true) {
 119        return session_register($variable);
 120      } else {
 121        return false;
 122      }
 123    }
 124  
 125    function tep_session_is_registered($variable) {
 126      return session_is_registered($variable);
 127    }
 128  
 129    function tep_session_unregister($variable) {
 130      return session_unregister($variable);
 131    }
 132  
 133    function tep_session_id($sessid = '') {
 134      if (!empty($sessid)) {
 135        return session_id($sessid);
 136      } else {
 137        return session_id();
 138      }
 139    }
 140  
 141    function tep_session_name($name = '') {
 142      if (!empty($name)) {
 143        return session_name($name);
 144      } else {
 145        return session_name();
 146      }
 147    }
 148  
 149    function tep_session_close() {
 150      if (PHP_VERSION >= '4.0.4') {
 151        return session_write_close();
 152      } elseif (function_exists('session_close')) {
 153        return session_close();
 154      }
 155    }
 156  
 157    function tep_session_destroy() {
 158      return session_destroy();
 159    }
 160  
 161    function tep_session_save_path($path = '') {
 162      if (!empty($path)) {
 163        return session_save_path($path);
 164      } else {
 165        return session_save_path();
 166      }
 167    }
 168  
 169    function tep_session_recreate() {
 170      if (PHP_VERSION >= 4.1) {
 171        $session_backup = $_SESSION;
 172  
 173        unset($_COOKIE[tep_session_name()]);
 174  
 175        tep_session_destroy();
 176  
 177        if (STORE_SESSIONS == 'mysql') {
 178          session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
 179        }
 180  
 181        tep_session_start();
 182  
 183        $_SESSION = $session_backup;
 184        unset($session_backup);
 185      }
 186    }
 187  ?>


[ Powered by PHPXref - Served by Debian GNU/Linux ]