ecshop init.php 文件分析
首先是init.php文件,这个文件在ecshop每个页面都会 调用到,习惯就先分析它:
<?php
/**
* ECSHOP 前台公用文件 //防止非法调用 defined-判断常量是否已定义,如果没返回false
if (!defined('IN_ECS')) die('Hacking attempt');//die-直接终止程序并输出 //报告所有错误
error_reporting(E_ALL); if (__FILE__ == '') die('Fatal error code: 0'); /*预定义常量
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。
__FUNCTION__ 函数名称(这是 PHP 4.3.0 新加的)。
__CLASS__ 类的名称(这是 PHP 4.3.0 新加的)。
__METHOD__ 类的方法名(这是 PHP 5.0.0 新加的)。 /* 取得当前商城所在的根目录 */
define('ROOT_PATH', str_replace('includes/init.php', '', str_replace('\\', '/', __FILE__))); if (!file_exists(ROOT_PATH . 'data/install.lock') && !file_exists(ROOT_PATH . 'includes/install.lock')
&& !defined('NO_CHECK_INSTALL')) header("Location: ./install/index.php\n");
exit;
}
/* 初始化设置 */
@ini_set('memory_limit', '64M');//ini_set设置php.ini中的设置,memory_limit设定一个脚本所能够申请到的最大内存字节数
@ini_set('session.cache_expire', 180);//指定会话页面在客户端cache中的有效期限(分钟),单位为分钟。
@ini_set('session.use_trans_sid', 0);//关闭自动把session id嵌入到web的URL中
@ini_set('session.use_cookies', 1);//允许使用cookie在客户端保存会话ID
@ini_set('session.auto_start', 0);//在客户访问任何页面时都自动初始化会话,0-禁止
@ini_set('display_errors', 1);//是否显示错误
if (DIRECTORY_SEPARATOR == '\\')//如果装在windows上(DIRECTORY_SEPARATOR路径分隔符,linux上就是’/’ windows上是’\’) @ini_set('include_path', '.;' . ROOT_PATH);//include目录为当前目录和网站根目录,windows下用';'分隔 else @ini_set('include_path', '.:' . ROOT_PATH);//include目录为当前目录和网站根目录,linux下用':'分隔
}
require(ROOT_PATH . 'data/config.php');//包含配置文件(数据库相关)
if (defined('DEBUG_MODE') == false)//如果常量DEBUG_MODE没有定义则定义为0,DEBUG_MODE用于设置ecshp的使用模式 define('DEBUG_MODE', 0); //设定用于所有日期时间函数的默认时区
if (PHP_VERSION >= '5.1' && !empty($timezone)) date_default_timezone_set($timezone);//date_default_timezone_set 设置时区 //$_SERVER['PHP_SELF']返回当前页面,获取$_SERVER['PHP_SELF']最好用htmlspecialchars过滤一下,存在XSS漏洞
$php_self = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
if ('/' == substr($php_self, -1))//如果是"/"结尾,则加上index.php $php_self .= 'index.php';
}

浙公网安备 33010602011771号