[ Index ]
 

Code source de osCommerce 2.2ms2-060817

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

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

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


Généré le : Mon Nov 26 19:48:25 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics