[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 sessions.php

Zen Cart 源代码 sessions.php




下载文件

文件名: sessions.php
文件类型: PHP文件
文件大小: 5.33 KiB
MD5: df7a006420779d5e144c75c5eefb0c60

sessions.php - 关闭高亮
  1. <?php
  2. /**
  3.  * functions/sessions.php
  4.  * Session functions
  5.  *
  6.  * @package functions
  7.  * @copyright Copyright 2003-2011 Zen Cart Development Team
  8.  * @copyright Portions Copyright 2003 osCommerce
  9.  * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  10.  * @version $Id: sessions.php 18697 2011-05-04 14:35:20Z wilt $
  11.  */
  12. if (!defined('IS_ADMIN_FLAG')) {
  13.   die('Illegal Access');
  14. }
  15.   if (IS_ADMIN_FLAG === true) {
  16.     if (!$SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN)) {
  17.       $SESS_LIFE = (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN);
  18.     }
  19.   } else {
  20.     if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
  21.       $SESS_LIFE = 1440;
  22.     }
  23.   }
  24.  
  25.   function _sess_open($save_path, $session_name) {
  26.     return true;
  27.   }
  28.  
  29.   function _sess_close() {
  30.     return true;
  31.   }
  32.  
  33.   function _sess_read($key) {
  34.     global $db;
  35.     $qid = "select value
  36.            from " . TABLE_SESSIONS . "
  37.            where sesskey = '" . zen_db_input($key) . "'
  38.            and expiry > '" . time() . "'";
  39.  
  40.     $value = $db->Execute($qid);
  41.  
  42.     if (isset($value->fields['value']) && $value->fields['value']) {
  43.       $value->fields['value'] = base64_decode($value->fields['value']);
  44.       return $value->fields['value'];
  45.     }
  46.  
  47.     return ("");
  48.   }
  49.  
  50.   function _sess_write($key, $val) {
  51.     global $db;
  52.     if (!is_object($db)) {
  53.       //PHP 5.2.0 bug workaround ...
  54.       if (!class_exists('queryFactory')) require('includes/classes/db/' .DB_TYPE . '/query_factory.php');
  55.       $db = new queryFactory();
  56.       $db->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE, USE_PCONNECT, false);
  57.     }
  58.     $val = base64_encode($val);
  59.  
  60.     global $SESS_LIFE;
  61.  
  62.     $expiry = time() + $SESS_LIFE;
  63.  
  64.     $qid = "select count(*) as total
  65.            from " . TABLE_SESSIONS . "
  66.            where sesskey = '" . zen_db_input($key) . "'";
  67.  
  68.     $total = $db->Execute($qid);
  69.  
  70.     if ($total->fields['total'] > 0) {
  71.       $sql = "update " . TABLE_SESSIONS . "
  72.              set expiry = '" . zen_db_input($expiry) . "', value = '" . zen_db_input($val) . "'
  73.              where sesskey = '" . zen_db_input($key) . "'";
  74.  
  75.       $result = $db->Execute($sql);
  76.  
  77.     } else {
  78.       $sql = "insert into " . TABLE_SESSIONS . "
  79.              values ('" . zen_db_input($key) . "', '" . zen_db_input($expiry) . "', '" .
  80.                        zen_db_input($val) . "')";
  81.  
  82.       $result = $db->Execute($sql);
  83.  
  84.     }
  85.   return (!empty($result) && !empty($result->resource));
  86.   }
  87.  
  88.   function _sess_destroy($key) {
  89.     global $db;
  90.     $sql = "delete from " . TABLE_SESSIONS . " where sesskey = '" . zen_db_input($key) . "'";
  91.     return $db->Execute($sql);
  92.   }
  93.  
  94.   function _sess_gc($maxlifetime) {
  95.     global $db;
  96.     $sql = "delete from " . TABLE_SESSIONS . " where expiry < " . time();
  97.     $db->Execute($sql);
  98.     return true;
  99.   }
  100.  
  101.   session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  102.  
  103.   function zen_session_start() {
  104.     @ini_set('session.gc_probability', 1);
  105.     @ini_set('session.gc_divisor', 2);
  106.     if (IS_ADMIN_FLAG === true) {
  107.       @ini_set('session.gc_maxlifetime', (SESSION_TIMEOUT_ADMIN > 900 ? 900 : SESSION_TIMEOUT_ADMIN));
  108.     }
  109.     if (preg_replace('/[a-zA-Z0-9]/', '', session_id()) != '')
  110.     {
  111.       zen_session_id(md5(uniqid(rand(), true)));
  112.     }
  113.     $temp = session_start();
  114.     if (!isset($_SESSION['securityToken'])) {
  115.       $_SESSION['securityToken'] = md5(uniqid(rand(), true));
  116.     }
  117.     return $temp;
  118.   }
  119.  
  120.   function zen_session_register($variable) {
  121.     die('This function has been deprecated. Please use Register Globals Off compatible code');
  122.   }
  123.  
  124.   function zen_session_is_registered($variable) {
  125.     die('This function has been deprecated. Please use Register Globals Off compatible code');
  126.   }
  127.  
  128.   function zen_session_unregister($variable) {
  129.     die('This function has been deprecated. Please use Register Globals Off compatible code');
  130.   }
  131.  
  132.   function zen_session_id($sessid = '') {
  133.     if (!empty($sessid)) {
  134.       $tempSessid = $sessid;
  135.       if (preg_replace('/[a-zA-Z0-9]/', '', $tempSessid) != '')
  136.       {
  137.         $sessid = md5(uniqid(rand(), true));
  138.       }
  139.       return session_id($sessid);
  140.     } else {
  141.       return session_id();
  142.     }
  143.   }
  144.  
  145.   function zen_session_name($name = '') {
  146.     if (!empty($name)) {
  147.       $tempName = $name;
  148.       if (preg_replace('/[a-zA-Z0-9]/', '', $tempName) == '') return session_name($name);
  149.       return FALSE;
  150.     } else {
  151.       return session_name();
  152.     }
  153.   }
  154.  
  155.   function zen_session_close() {
  156.     if (function_exists('session_close')) {
  157.       return session_close();
  158.     }
  159.   }
  160.  
  161.   function zen_session_destroy() {
  162.     return session_destroy();
  163.   }
  164.  
  165.   function zen_session_save_path($path = '') {
  166.     if (!empty($path)) {
  167.       return session_save_path($path);
  168.     } else {
  169.       return session_save_path();
  170.     }
  171.   }
  172.  
  173.   function zen_session_recreate() {
  174.     global $http_domain, $https_domain, $current_domain;
  175.       if ($http_domain == $https_domain) {
  176.       $saveSession = $_SESSION;
  177.       $oldSessID = session_id();
  178.       $newSessID = session_id();
  179.       session_id($oldSessID);
  180.       session_id($newSessID);
  181.       session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  182.       $_SESSION = $saveSession;
  183.       if (IS_ADMIN_FLAG !== true) {
  184.         whos_online_session_recreate($oldSessID, $newSessID);
  185.       }
  186.     }
  187.   }
  188.