[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.1 KiB
MD5: 412f47518dfc1adc16552196f162c578

sessions.php - 关闭高亮
  1. <?php
  2. /**
  3.  * functions/sessions.php
  4.  * Session functions
  5.  *
  6.  * @package functions
  7.  * @copyright Copyright 2003-2014 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 GIT: $Id: Author: DrByte  Wed Mar 12 22:37:22 2014 -0400 Modified in v1.5.3 $
  11.  */
  12. if (!defined('IS_ADMIN_FLAG')) {
  13.   die('Illegal Access');
  14. }
  15.   if (IS_ADMIN_FLAG === true) {
  16.     if (PADSS_ADMIN_SESSION_TIMEOUT_ENFORCED != 0 && SESSION_TIMEOUT_ADMIN > 900) {
  17.       $SESS_LIFE = 900;
  18.     } else {
  19.       $SESS_LIFE = (int)SESSION_TIMEOUT_ADMIN;
  20.     }
  21.   } else {
  22.     if (defined('SESSION_TIMEOUT_CATALOG') && (int)SESSION_TIMEOUT_CATALOG > 120) {
  23.       $SESS_LIFE = (int)SESSION_TIMEOUT_CATALOG;
  24.     } else
  25.     if (!$SESS_LIFE = get_cfg_var('session.gc_maxlifetime')) {
  26.       $SESS_LIFE = 1440;
  27.     }
  28.   }
  29.  
  30.   function _sess_open($save_path, $session_name) {
  31.     return true;
  32.   }
  33.  
  34.   function _sess_close() {
  35.     return true;
  36.   }
  37.  
  38.   function _sess_read($key) {
  39.     global $db;
  40.     $qid = "select value
  41.            from " . TABLE_SESSIONS . "
  42.            where sesskey = '" . zen_db_input($key) . "'
  43.            and expiry > '" . time() . "'";
  44.  
  45.     $value = $db->Execute($qid);
  46.  
  47.     if (isset($value->fields['value']) && $value->fields['value']) {
  48.       $value->fields['value'] = base64_decode($value->fields['value']);
  49.       return $value->fields['value'];
  50.     }
  51.  
  52.     return ("");
  53.   }
  54.  
  55.   function _sess_write($key, $val) {
  56.     global $db;
  57.     if (!is_object($db)) return;
  58.     $val = base64_encode($val);
  59.  
  60.     global $SESS_LIFE;
  61.     $expiry = time() + $SESS_LIFE;
  62.  
  63.     $qid = "select count(*) as total
  64.            from " . TABLE_SESSIONS . "
  65.            where sesskey = '" . zen_db_input($key) . "'";
  66.     $total = $db->Execute($qid);
  67.  
  68.     if ($total->fields['total'] > 0) {
  69.       $sql = "update " . TABLE_SESSIONS . "
  70.              set expiry = '" . zen_db_input($expiry) . "', value = '" . zen_db_input($val) . "'
  71.              where sesskey = '" . zen_db_input($key) . "'";
  72.       $result = $db->Execute($sql);
  73.     } else {
  74.       $sql = "insert into " . TABLE_SESSIONS . "
  75.              values ('" . zen_db_input($key) . "', '" . zen_db_input($expiry) . "', '" .
  76.                        zen_db_input($val) . "')";
  77.       $result = $db->Execute($sql);
  78.     }
  79.     return (!empty($result) && !empty($result->resource));
  80.   }
  81.  
  82.   function _sess_destroy($key) {
  83.     global $db;
  84.     $sql = "delete from " . TABLE_SESSIONS . " where sesskey = '" . zen_db_input($key) . "'";
  85.     $db->Execute($sql);
  86.     return TRUE;
  87.   }
  88.  
  89.   function _sess_gc($maxlifetime) {
  90.     global $db;
  91.     $sql = "delete from " . TABLE_SESSIONS . " where expiry < " . time();
  92.     $db->Execute($sql);
  93.     return true;
  94.   }
  95.  
  96.  
  97.   // Initialize session save-handler
  98.   session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  99.   // write and close session at the end of scripts, and before objects are destroyed
  100.   register_shutdown_function('session_write_close');
  101.  
  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.     } elseif (defined('SESSION_TIMEOUT_CATALOG') && (int)SESSION_TIMEOUT_CATALOG > 120) {
  109.       @ini_set('session.gc_maxlifetime', (int)SESSION_TIMEOUT_CATALOG);
  110.     }
  111.     if (preg_replace('/[a-zA-Z0-9]/', '', session_id()) != '')
  112.     {
  113.       zen_session_id(md5(uniqid(rand(), true)));
  114.     }
  115.     $temp = session_start();
  116.     if (!isset($_SESSION['securityToken'])) {
  117.       $_SESSION['securityToken'] = md5(uniqid(rand(), true));
  118.     }
  119.     return $temp;
  120.   }
  121.  
  122.   function zen_session_id($sessid = '') {
  123.     if (!empty($sessid)) {
  124.       $tempSessid = $sessid;
  125.       if (preg_replace('/[a-zA-Z0-9]/', '', $tempSessid) != '')
  126.       {
  127.         $sessid = md5(uniqid(rand(), true));
  128.       }
  129.       return session_id($sessid);
  130.     } else {
  131.       return session_id();
  132.     }
  133.   }
  134.  
  135.   function zen_session_name($name = '') {
  136.     if (!empty($name)) {
  137.       $tempName = $name;
  138.       if (preg_replace('/[a-zA-Z0-9]/', '', $tempName) == '') return session_name($name);
  139.       return FALSE;
  140.     } else {
  141.       return session_name();
  142.     }
  143.   }
  144.  
  145.   function zen_session_write_close() {
  146.     return session_write_close();
  147.   }
  148.  
  149.   function zen_session_destroy() {
  150.     return session_destroy();
  151.   }
  152.  
  153.   function zen_session_save_path($path = '') {
  154.     if (!empty($path)) {
  155.       return session_save_path($path);
  156.     } else {
  157.       return session_save_path();
  158.     }
  159.   }
  160.  
  161.   function zen_session_recreate() {
  162.     global $http_domain, $https_domain, $current_domain;
  163.       if ($http_domain == $https_domain) {
  164.       $saveSession = $_SESSION;
  165.       $oldSessID = session_id();
  166.       $newSessID = session_id();
  167.       session_id($oldSessID);
  168.       session_id($newSessID);
  169.       session_set_save_handler('_sess_open', '_sess_close', '_sess_read', '_sess_write', '_sess_destroy', '_sess_gc');
  170.       $_SESSION = $saveSession;
  171.       if (IS_ADMIN_FLAG !== true) {
  172.         whos_online_session_recreate($oldSessID, $newSessID);
  173.       }
  174.     }
  175.   }
  176.