[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 源代码 init_sessions.php

Zen Cart 源代码 init_sessions.php




下载文件

文件名: init_sessions.php
文件类型: PHP文件
文件大小: 5.33 KiB
MD5: a6bd84985be57afa46f219f03d794b81

init_sessions.php - 关闭高亮
  1. <?php
  2. /**
  3.  * session handling
  4.  * see {@link  http://www.zen-cart.com/wiki/index.php/Developers_API_Tutorials#InitSystem wikitutorials} for more details.
  5.  *
  6.  * @package initSystem
  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: init_sessions.php 18695 2011-05-04 05:24:19Z drbyte $
  11.  */
  12. if (!defined('IS_ADMIN_FLAG')) {
  13.   die('Illegal Access');
  14. }
  15. /**
  16.  * sanity check in case zenid has been incorrectly supplied as an htmlencoded param name
  17.  */
  18. if (!isset($_GET['zenid']) && isset($_GET['amp;zenid'])) {
  19.   $_GET['zenid'] = $_GET['amp;zenid'];
  20.   unset($_GET['amp;zenid']);
  21. } else if (isset($_GET['amp;zenid'])) {
  22.   unset($_GET['amp;zenid']);
  23. }
  24.  
  25. /**
  26.  * require the session handling functions
  27.  */
  28. require(DIR_WS_FUNCTIONS . 'sessions.php');
  29. /**
  30.  * set the session name and save path
  31.  */
  32. zen_session_name('zenid');
  33. zen_session_save_path(SESSION_WRITE_DIRECTORY);
  34. /**
  35.  * set the session cookie parameters
  36.  */
  37. $path = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
  38. if (defined('SESSION_USE_ROOT_COOKIE_PATH') && SESSION_USE_ROOT_COOKIE_PATH  == 'True') $path = '/';
  39. $path = (defined('CUSTOM_COOKIE_PATH')) ? CUSTOM_COOKIE_PATH : $path;
  40. $domainPrefix = (!defined('SESSION_ADD_PERIOD_PREFIX') || SESSION_ADD_PERIOD_PREFIX == 'True') ? '.' : '';
  41. $secureFlag = ((ENABLE_SSL == 'true' && substr(HTTP_SERVER, 0, 6) == 'https:' && substr(HTTPS_SERVER, 0, 6) == 'https:') || (ENABLE_SSL == 'false' && substr(HTTP_SERVER, 0, 6) == 'https:')) ? TRUE : FALSE;
  42.  
  43. if (PHP_VERSION >= '5.2.0') {
  44.   session_set_cookie_params(0, $path, (zen_not_null($cookieDomain) ? $domainPrefix . $cookieDomain : ''), $secureFlag, TRUE);
  45. } else {
  46.   session_set_cookie_params(0, $path, (zen_not_null($cookieDomain) ? $domainPrefix . $cookieDomain : ''), $secureFlag);
  47. }
  48. /**
  49.  * set the session ID if it exists
  50.  */
  51. if (isset($_POST[zen_session_name()])) {
  52.   zen_session_id($_POST[zen_session_name()]);
  53. } elseif ( ($request_type == 'SSL') && isset($_GET[zen_session_name()]) ) {
  54.   zen_session_id($_GET[zen_session_name()]);
  55. }
  56. /**
  57.  * need to tidy up $_SERVER['REMOTE_ADDR'] here beofre we use it any where else
  58.  * one problem we don't address here is if $_SERVER['REMOTE_ADDRESS'] is not set to anything at all
  59.  */
  60. $ipAddressArray = explode(',', $_SERVER['REMOTE_ADDR']);
  61. $ipAddress = (sizeof($ipAddressArray) > 0) ? $ipAddressArray[0] : '';
  62. $_SERVER['REMOTE_ADDR'] = $ipAddress;
  63. /**
  64.  * start the session
  65.  */
  66. $session_started = false;
  67. if (SESSION_FORCE_COOKIE_USE == 'True') {
  68.   zen_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, '/', (zen_not_null($current_domain) ? $current_domain : ''));
  69.  
  70.   if (isset($_COOKIE['cookie_test'])) {
  71.     zen_session_start();
  72.     $session_started = true;
  73.   }
  74. } elseif (SESSION_BLOCK_SPIDERS == 'True') {
  75.   $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  76.   $spider_flag = false;
  77.   if (zen_not_null($user_agent)) {
  78.     $spiders = file(DIR_WS_INCLUDES . 'spiders.txt');
  79.     for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
  80.       if (zen_not_null($spiders[$i]) && substr($spiders[$i], 0, 4) != '$Id:') {
  81.         if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
  82.           $spider_flag = true;
  83.           break;
  84.         }
  85.       }
  86.     }
  87.   }
  88.   if ($spider_flag == false) {
  89.     zen_session_start();
  90.     $session_started = true;
  91.   } else {
  92.     if (isset($_GET['zenid']) && $_GET['zenid'] != '') {
  93.       $tmp = (isset($_GET['main_page']) && $_GET['main_page'] != '') ? $_GET['main_page'] : FILENAME_DEFAULT;
  94.       @header("HTTP/1.1 301 Moved Permanently");
  95.       @zen_redirect(@zen_href_link($tmp, @zen_get_all_get_params(array('zenid')), $request_type, FALSE));
  96.       unset($tmp);
  97.       die();
  98.     }
  99.   }
  100. } else {
  101.   zen_session_start();
  102.   $session_started = true;
  103. }
  104. unset($spiders);
  105. /**
  106.  * set host_address once per session to reduce load on server
  107.  */
  108. if (!isset($_SESSION['customers_host_address'])) {
  109.   if (SESSION_IP_TO_HOST_ADDRESS == 'true') {
  110.     $_SESSION['customers_host_address']= @gethostbyaddr($_SERVER['REMOTE_ADDR']);
  111.   } else {
  112.     $_SESSION['customers_host_address'] = OFFICE_IP_TO_HOST_ADDRESS;
  113.   }
  114. }
  115. /**
  116.  * verify the ssl_session_id if the feature is enabled
  117.  */
  118. if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == 'true') && ($session_started == true) ) {
  119.   $ssl_session_id = $_SERVER['SSL_SESSION_ID'];
  120.   if (!$_SESSION['SSL_SESSION_ID']) {
  121.     $_SESSION['SSL_SESSION_ID'] = $ssl_session_id;
  122.   }
  123.   if ($_SESSION['SSL_SESSION_ID'] != $ssl_session_id) {
  124.     zen_session_destroy();
  125.     zen_redirect(zen_href_link(FILENAME_SSL_CHECK));
  126.   }
  127. }
  128. /**
  129.  * verify the browser user agent if the feature is enabled
  130.  */
  131. if (SESSION_CHECK_USER_AGENT == 'True') {
  132.   $http_user_agent = $_SERVER['HTTP_USER_AGENT'];
  133.   if (!$_SESSION['SESSION_USER_AGENT']) {
  134.     $_SESSION['SESSION_USER_AGENT'] = $http_user_agent;
  135.   }
  136.   if ($_SESSION['SESSION_USER_AGENT'] != $http_user_agent) {
  137.     zen_session_destroy();
  138.     zen_redirect(zen_href_link(FILENAME_LOGIN));
  139.   }
  140. }
  141. /**
  142.  * verify the IP address if the feature is enabled
  143.  */
  144. if (SESSION_CHECK_IP_ADDRESS == 'True') {
  145.   $ip_address = zen_get_ip_address();
  146.   if (!$_SESSION['SESSION_IP_ADDRESS']) {
  147.     $_SESSION['SESSION_IP_ADDRESS'] = $ip_address;
  148.   }
  149.   if ($_SESSION['SESSION_IP_ADDRESS'] != $ip_address) {
  150.     zen_session_destroy();
  151.     zen_redirect(zen_href_link(FILENAME_LOGIN));
  152.   }
  153. }
  154.