<?
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 ' ;
}
define ( ' PHP_SELF ' , $php_self ); // 放入常量
require (ROOT_PATH . ' includes/inc_constant.php ' ); // 包含预定义常量文件
require (ROOT_PATH . ' includes/cls_ecshop.php ' ); // 基础类 文件
require (ROOT_PATH . ' includes/cls_error.php ' ); // 错误类 文件
require (ROOT_PATH . ' includes/lib_time.php ' ); // 时间函数
require (ROOT_PATH . ' includes/lib_base.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_common.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_main.php ' ); // 公用函数库
require (ROOT_PATH . ' includes/lib_insert.php ' ); // 动态内容函数库
require (ROOT_PATH . ' includes/lib_goods.php ' ); // 商品相关函数库
require (ROOT_PATH . ' includes/lib_article.php ' ); // 文章及文章分类相关函数库
/* 对用户传入的变量进行转义操作。 */
if ( ! get_magic_quotes_gpc ())
{
if ( ! empty ( $_GET ))
{
$_GET = addslashes_deep( $_GET );
}
if ( ! empty ( $_POST ))
{
$_POST = addslashes_deep( $_POST );
}
$_COOKIE = addslashes_deep( $_COOKIE );
$_REQUEST = addslashes_deep( $_REQUEST );
}
/* 创建 ECSHOP 对象 */
$ecs = new ECS( $db_name , $prefix ); // 参数说明:数据库名 表前缀
define ( ' DATA_DIR ' , $ecs -> data_dir()); // 数据目录
define ( ' IMAGE_DIR ' , $ecs -> image_dir()); // 图片目录
/* 初始化数据库类 */
require (ROOT_PATH . ' includes/cls_mysql.php ' );
$db = new cls_mysql( $db_host , $db_user , $db_pass , $db_name );
/* 设置不允许进行缓存的表 */
$db -> set_disable_cache_tables( array ( $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ) , $ecs -> table( ' cart ' )));
$db_host = $db_user = $db_pass = $db_name = NULL ;
/* 创建错误处理对象 */
$err = new ecs_error( ' message.dwt ' );
/* 载入系统参数 */
$_CFG = load_config(); // 载入配置信息函数在lib_common.php
/* 载入语言文件 */
require (ROOT_PATH . ' languages/ ' . $_CFG [ ' lang ' ] . ' /common.php ' );
if ( $_CFG [ ' shop_closed ' ] == 1 )
{
/* 商店关闭了,输出关闭的消息 */
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
die ( ' <div style="margin: 150px; text-align: center; font-size: 14px"><p> ' . $_LANG [ ' shop_closed ' ] . ' </p><p> ' . $_CFG [ ' close_comment ' ] . ' </p></div> ' );
}
// 判断是否为搜索引擎蜘蛛 函数在lib_main.php
if (is_spider())
{
/* 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中 */
if ( ! defined ( ' INIT_NO_USERS ' ))
{
define ( ' INIT_NO_USERS ' , true );
/* 整合UC后,如果是蜘蛛访问,初始化UC需要的常量 */
if ( $_CFG [ ' integrate_code ' ] == ' ucenter ' )
{
$user = & init_users();
}
}
$_SESSION = array ();
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
}
// 非搜索引擎蜘蛛,记录session
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 初始化session */
include (ROOT_PATH . ' includes/cls_session.php ' );
$sess = new cls_session( $db , $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ));
define ( ' SESS_ID ' , $sess -> get_session_id());
}
// 如果使用Smarty
if ( ! defined ( ' INIT_NO_SMARTY ' ))
{
header ( ' Cache-control: private ' );
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
/* 创建 Smarty 对象。 */
require (ROOT_PATH . ' includes/cls_template.php ' );
$smarty = new cls_template;
$smarty -> cache_lifetime = $_CFG [ ' cache_time ' ]; // 缓存时间
$smarty -> template_dir = ROOT_PATH . ' themes/ ' . $_CFG [ ' template ' ]; // 模板所在
$smarty -> cache_dir = ROOT_PATH . ' temp/caches ' ; // 缓存所在
$smarty -> compile_dir = ROOT_PATH . ' temp/compiled ' ; // 模板编译后的文件所在
if ((DEBUG_MODE & 2 ) == 2 ) // 如果常量DEBUG_MODE值为 2、3、6、7
.时
{
$smarty -> direct_output = true ; // 不使用缓存直接输出
$smarty -> force_compile = true ; // 强行编译
}
else
{
$smarty -> direct_output = false ;
$smarty -> force_compile = false ;
}
$smarty -> assign( ' lang ' , $_LANG );
$smarty -> assign( ' ecs_charset ' , EC_CHARSET);
if ( ! empty ( $_CFG [ ' stylename ' ])) // 如果自己定义样式文件就用自己的
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style_ ' . $_CFG [ ' stylename ' ] . ' .css ' );
}
else
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style.css ' );
}
}
// 非搜索引擎爬虫,记录用户信息
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 会员信息 初始化会员数据 lib_common.php */
$user =& init_users();
if ( ! isset ( $_SESSION [ ' user_id ' ]))
{
/* 获取投放站点的名称 */
$site_name = isset ( $_GET [ ' from ' ]) ? $_GET [ ' from ' ] : addslashes ( $_LANG [ ' self_site ' ]);
$from_ad = ! empty ( $_GET [ ' ad_id ' ]) ? intval ( $_GET [ ' ad_id ' ]) : 0 ;
$_SESSION [ ' from_ad ' ] = $from_ad ; // 用户点击的广告ID
$_SESSION [ ' referer ' ] = stripslashes ( $site_name ); // 用户来源
unset ( $site_name );
if ( ! defined ( ' INGORE_VISIT_STATS ' ))
{
visit_stats();
}
}
if ( empty ( $_SESSION [ ' user_id ' ]))
{
if ( $user -> get_cookie())
{
/* 如果会员已经登录并且还没有获得会员的帐户余额、积分以及优惠券 */
if ( $_SESSION [ ' user_id ' ] > 0 )
{
update_user_info();
}
}
else
{
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
if ( ! isset ( $_SESSION [ ' login_fail ' ]))
{
$_SESSION [ ' login_fail ' ] = 0 ;
}
}
}
/* 设置推荐会员 */
if ( isset ( $_GET [ ' u ' ]))
{
set_affiliate();
}
if ( isset ( $smarty ))
{
$smarty -> assign( ' ecs_session ' , $_SESSION );
}
}
if ((DEBUG_MODE & 1 ) == 1 ) // 如果常量DEBUG_MODE值为 1、3、5、7
.时
{
error_reporting ( E_ALL ); // 报告全部错误
}
else
{
error_reporting ( E_ALL ^ E_NOTICE ); // 报告除E_NOTICE以外的所有错误
}
if ((DEBUG_MODE & 4 ) == 4 ) // 如果常量DEBUG_MODE值为 4、5、6、7
.时,调试程序
{
include (ROOT_PATH . ' includes/lib.debug.php ' ); //
}
/* 判断是否支持 Gzip 模式 如果使用SMARTY同时设置了网页压缩,则启用压缩 */
if ( ! defined ( ' INIT_NO_SMARTY ' ) && gzip_enabled())
{
ob_start ( ' ob_gzhandler ' ); // 压缩后放入缓冲区
}
else
{
ob_start (); // 打开缓冲区,把下面要显示的内容先缓在服务器
}
/*
ob_start相关函数了解:
1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
*/
?> <? 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 ' ;
}
define ( ' PHP_SELF ' , $php_self ); // 放入常量
require (ROOT_PATH . ' includes/inc_constant.php ' ); // 包含预定义常量文件
require (ROOT_PATH . ' includes/cls_ecshop.php ' ); // 基础类 文件
require (ROOT_PATH . ' includes/cls_error.php ' ); // 错误类 文件
require (ROOT_PATH . ' includes/lib_time.php ' ); // 时间函数
require (ROOT_PATH . ' includes/lib_base.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_common.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_main.php ' ); // 公用函数库
require (ROOT_PATH . ' includes/lib_insert.php ' ); // 动态内容函数库
require (ROOT_PATH . ' includes/lib_goods.php ' ); // 商品相关函数库
require (ROOT_PATH . ' includes/lib_article.php ' ); // 文章及文章分类相关函数库
/* 对用户传入的变量进行转义操作。 */
if ( ! get_magic_quotes_gpc ())
{
if ( ! empty ( $_GET ))
{
$_GET = addslashes_deep( $_GET );
}
if ( ! empty ( $_POST ))
{
$_POST = addslashes_deep( $_POST );
}
$_COOKIE = addslashes_deep( $_COOKIE );
$_REQUEST = addslashes_deep( $_REQUEST );
}
/* 创建 ECSHOP 对象 */
$ecs = new ECS( $db_name , $prefix ); // 参数说明:数据库名 表前缀
define ( ' DATA_DIR ' , $ecs -> data_dir()); // 数据目录
define ( ' IMAGE_DIR ' , $ecs -> image_dir()); // 图片目录
/* 初始化数据库类 */
require (ROOT_PATH . ' includes/cls_mysql.php ' );
$db = new cls_mysql( $db_host , $db_user , $db_pass , $db_name );
/* 设置不允许进行缓存的表 */
$db -> set_disable_cache_tables( array ( $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ) , $ecs -> table( ' cart ' )));
$db_host = $db_user = $db_pass = $db_name = NULL ;
/* 创建错误处理对象 */
$err = new ecs_error( ' message.dwt ' );
/* 载入系统参数 */
$_CFG = load_config(); // 载入配置信息函数在lib_common.php
/* 载入语言文件 */
require (ROOT_PATH . ' languages/ ' . $_CFG [ ' lang ' ] . ' /common.php ' );
if ( $_CFG [ ' shop_closed ' ] == 1 )
{
/* 商店关闭了,输出关闭的消息 */
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
die ( ' <div style="margin: 150px; text-align: center; font-size: 14px"><p> ' . $_LANG [ ' shop_closed ' ] . ' </p><p> ' . $_CFG [ ' close_comment ' ] . ' </p></div> ' );
}
// 判断是否为搜索引擎蜘蛛 函数在lib_main.php
if (is_spider())
{
/* 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中 */
if ( ! defined ( ' INIT_NO_USERS ' ))
{
define ( ' INIT_NO_USERS ' , true );
/* 整合UC后,如果是蜘蛛访问,初始化UC需要的常量 */
if ( $_CFG [ ' integrate_code ' ] == ' ucenter ' )
{
$user = & init_users();
}
}
$_SESSION = array ();
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
}
// 非搜索引擎蜘蛛,记录session
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 初始化session */
include (ROOT_PATH . ' includes/cls_session.php ' );
$sess = new cls_session( $db , $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ));
define ( ' SESS_ID ' , $sess -> get_session_id());
}
// 如果使用Smarty
if ( ! defined ( ' INIT_NO_SMARTY ' ))
{
header ( ' Cache-control: private ' );
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
/* 创建 Smarty 对象。 */
require (ROOT_PATH . ' includes/cls_template.php ' );
$smarty = new cls_template;
$smarty -> cache_lifetime = $_CFG [ ' cache_time ' ]; // 缓存时间
$smarty -> template_dir = ROOT_PATH . ' themes/ ' . $_CFG [ ' template ' ]; // 模板所在
$smarty -> cache_dir = ROOT_PATH . ' temp/caches ' ; // 缓存所在
$smarty -> compile_dir = ROOT_PATH . ' temp/compiled ' ; // 模板编译后的文件所在
if ((DEBUG_MODE & 2 ) == 2 ) // 如果常量DEBUG_MODE值为 2、3、6、7
.时
{
$smarty -> direct_output = true ; // 不使用缓存直接输出
$smarty -> force_compile = true ; // 强行编译
}
else
{
$smarty -> direct_output = false ;
$smarty -> force_compile = false ;
}
$smarty -> assign( ' lang ' , $_LANG );
$smarty -> assign( ' ecs_charset ' , EC_CHARSET);
if ( ! empty ( $_CFG [ ' stylename ' ])) // 如果自己定义样式文件就用自己的
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style_ ' . $_CFG [ ' stylename ' ] . ' .css ' );
}
else
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style.css ' );
}
}
// 非搜索引擎爬虫,记录用户信息
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 会员信息 初始化会员数据 lib_common.php */
$user =& init_users();
if ( ! isset ( $_SESSION [ ' user_id ' ]))
{
/* 获取投放站点的名称 */
$site_name = isset ( $_GET [ ' from ' ]) ? $_GET [ ' from ' ] : addslashes ( $_LANG [ ' self_site ' ]);
$from_ad = ! empty ( $_GET [ ' ad_id ' ]) ? intval ( $_GET [ ' ad_id ' ]) : 0 ;
$_SESSION [ ' from_ad ' ] = $from_ad ; // 用户点击的广告ID
$_SESSION [ ' referer ' ] = stripslashes ( $site_name ); // 用户来源
unset ( $site_name );
if ( ! defined ( ' INGORE_VISIT_STATS ' ))
{
visit_stats();
}
}
if ( empty ( $_SESSION [ ' user_id ' ]))
{
if ( $user -> get_cookie())
{
/* 如果会员已经登录并且还没有获得会员的帐户余额、积分以及优惠券 */
if ( $_SESSION [ ' user_id ' ] > 0 )
{
update_user_info();
}
}
else
{
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
if ( ! isset ( $_SESSION [ ' login_fail ' ]))
{
$_SESSION [ ' login_fail ' ] = 0 ;
}
}
}
/* 设置推荐会员 */
if ( isset ( $_GET [ ' u ' ]))
{
set_affiliate();
}
if ( isset ( $smarty ))
{
$smarty -> assign( ' ecs_session ' , $_SESSION );
}
}
if ((DEBUG_MODE & 1 ) == 1 ) // 如果常量DEBUG_MODE值为 1、3、5、7
.时
{
error_reporting ( E_ALL ); // 报告全部错误
}
else
{
error_reporting ( E_ALL ^ E_NOTICE ); // 报告除E_NOTICE以外的所有错误
}
if ((DEBUG_MODE & 4 ) == 4 ) // 如果常量DEBUG_MODE值为 4、5、6、7
.时,调试程序
{
include (ROOT_PATH . ' includes/lib.debug.php ' ); //
}
/* 判断是否支持 Gzip 模式 如果使用SMARTY同时设置了网页压缩,则启用压缩 */
if ( ! defined ( ' INIT_NO_SMARTY ' ) && gzip_enabled())
{
ob_start ( ' ob_gzhandler ' ); // 压缩后放入缓冲区
}
else
{
ob_start (); // 打开缓冲区,把下面要显示的内容先缓在服务器
}
/*
ob_start相关函数了解:
1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
*/
?>
/* *
* 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 ' ;
}
define ( ' PHP_SELF ' , $php_self ); // 放入常量
require (ROOT_PATH . ' includes/inc_constant.php ' ); // 包含预定义常量文件
require (ROOT_PATH . ' includes/cls_ecshop.php ' ); // 基础类 文件
require (ROOT_PATH . ' includes/cls_error.php ' ); // 错误类 文件
require (ROOT_PATH . ' includes/lib_time.php ' ); // 时间函数
require (ROOT_PATH . ' includes/lib_base.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_common.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_main.php ' ); // 公用函数库
require (ROOT_PATH . ' includes/lib_insert.php ' ); // 动态内容函数库
require (ROOT_PATH . ' includes/lib_goods.php ' ); // 商品相关函数库
require (ROOT_PATH . ' includes/lib_article.php ' ); // 文章及文章分类相关函数库
/* 对用户传入的变量进行转义操作。 */
if ( ! get_magic_quotes_gpc ())
{
if ( ! empty ( $_GET ))
{
$_GET = addslashes_deep( $_GET );
}
if ( ! empty ( $_POST ))
{
$_POST = addslashes_deep( $_POST );
}
$_COOKIE = addslashes_deep( $_COOKIE );
$_REQUEST = addslashes_deep( $_REQUEST );
}
/* 创建 ECSHOP 对象 */
$ecs = new ECS( $db_name , $prefix ); // 参数说明:数据库名 表前缀
define ( ' DATA_DIR ' , $ecs -> data_dir()); // 数据目录
define ( ' IMAGE_DIR ' , $ecs -> image_dir()); // 图片目录
/* 初始化数据库类 */
require (ROOT_PATH . ' includes/cls_mysql.php ' );
$db = new cls_mysql( $db_host , $db_user , $db_pass , $db_name );
/* 设置不允许进行缓存的表 */
$db -> set_disable_cache_tables( array ( $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ) , $ecs -> table( ' cart ' )));
$db_host = $db_user = $db_pass = $db_name = NULL ;
/* 创建错误处理对象 */
$err = new ecs_error( ' message.dwt ' );
/* 载入系统参数 */
$_CFG = load_config(); // 载入配置信息函数在lib_common.php
/* 载入语言文件 */
require (ROOT_PATH . ' languages/ ' . $_CFG [ ' lang ' ] . ' /common.php ' );
if ( $_CFG [ ' shop_closed ' ] == 1 )
{
/* 商店关闭了,输出关闭的消息 */
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
die ( ' <div style="margin: 150px; text-align: center; font-size: 14px"><p> ' . $_LANG [ ' shop_closed ' ] . ' </p><p> ' . $_CFG [ ' close_comment ' ] . ' </p></div> ' );
}
// 判断是否为搜索引擎蜘蛛 函数在lib_main.php
if (is_spider())
{
/* 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中 */
if ( ! defined ( ' INIT_NO_USERS ' ))
{
define ( ' INIT_NO_USERS ' , true );
/* 整合UC后,如果是蜘蛛访问,初始化UC需要的常量 */
if ( $_CFG [ ' integrate_code ' ] == ' ucenter ' )
{
$user = & init_users();
}
}
$_SESSION = array ();
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
}
// 非搜索引擎蜘蛛,记录session
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 初始化session */
include (ROOT_PATH . ' includes/cls_session.php ' );
$sess = new cls_session( $db , $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ));
define ( ' SESS_ID ' , $sess -> get_session_id());
}
// 如果使用Smarty
if ( ! defined ( ' INIT_NO_SMARTY ' ))
{
header ( ' Cache-control: private ' );
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
/* 创建 Smarty 对象。 */
require (ROOT_PATH . ' includes/cls_template.php ' );
$smarty = new cls_template;
$smarty -> cache_lifetime = $_CFG [ ' cache_time ' ]; // 缓存时间
$smarty -> template_dir = ROOT_PATH . ' themes/ ' . $_CFG [ ' template ' ]; // 模板所在
$smarty -> cache_dir = ROOT_PATH . ' temp/caches ' ; // 缓存所在
$smarty -> compile_dir = ROOT_PATH . ' temp/compiled ' ; // 模板编译后的文件所在
if ((DEBUG_MODE & 2 ) == 2 ) // 如果常量DEBUG_MODE值为 2、3、6、7
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
{
$smarty -> direct_output = true ; // 不使用缓存直接输出
$smarty -> force_compile = true ; // 强行编译
}
else
{
$smarty -> direct_output = false ;
$smarty -> force_compile = false ;
}
$smarty -> assign( ' lang ' , $_LANG );
$smarty -> assign( ' ecs_charset ' , EC_CHARSET);
if ( ! empty ( $_CFG [ ' stylename ' ])) // 如果自己定义样式文件就用自己的
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style_ ' . $_CFG [ ' stylename ' ] . ' .css ' );
}
else
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style.css ' );
}
}
// 非搜索引擎爬虫,记录用户信息
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 会员信息 初始化会员数据 lib_common.php */
$user =& init_users();
if ( ! isset ( $_SESSION [ ' user_id ' ]))
{
/* 获取投放站点的名称 */
$site_name = isset ( $_GET [ ' from ' ]) ? $_GET [ ' from ' ] : addslashes ( $_LANG [ ' self_site ' ]);
$from_ad = ! empty ( $_GET [ ' ad_id ' ]) ? intval ( $_GET [ ' ad_id ' ]) : 0 ;
$_SESSION [ ' from_ad ' ] = $from_ad ; // 用户点击的广告ID
$_SESSION [ ' referer ' ] = stripslashes ( $site_name ); // 用户来源
unset ( $site_name );
if ( ! defined ( ' INGORE_VISIT_STATS ' ))
{
visit_stats();
}
}
if ( empty ( $_SESSION [ ' user_id ' ]))
{
if ( $user -> get_cookie())
{
/* 如果会员已经登录并且还没有获得会员的帐户余额、积分以及优惠券 */
if ( $_SESSION [ ' user_id ' ] > 0 )
{
update_user_info();
}
}
else
{
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
if ( ! isset ( $_SESSION [ ' login_fail ' ]))
{
$_SESSION [ ' login_fail ' ] = 0 ;
}
}
}
/* 设置推荐会员 */
if ( isset ( $_GET [ ' u ' ]))
{
set_affiliate();
}
if ( isset ( $smarty ))
{
$smarty -> assign( ' ecs_session ' , $_SESSION );
}
}
if ((DEBUG_MODE & 1 ) == 1 ) // 如果常量DEBUG_MODE值为 1、3、5、7
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
{
error_reporting ( E_ALL ); // 报告全部错误
}
else
{
error_reporting ( E_ALL ^ E_NOTICE ); // 报告除E_NOTICE以外的所有错误
}
if ((DEBUG_MODE & 4 ) == 4 ) // 如果常量DEBUG_MODE值为 4、5、6、7
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
{
include (ROOT_PATH . ' includes/lib.debug.php ' ); //
}
/* 判断是否支持 Gzip 模式 如果使用SMARTY同时设置了网页压缩,则启用压缩 */
if ( ! defined ( ' INIT_NO_SMARTY ' ) && gzip_enabled())
{
ob_start ( ' ob_gzhandler ' ); // 压缩后放入缓冲区
}
else
{
ob_start (); // 打开缓冲区,把下面要显示的内容先缓在服务器
}
/*
ob_start相关函数了解:
1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
*/
?> <? 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 ' ;
}
define ( ' PHP_SELF ' , $php_self ); // 放入常量
require (ROOT_PATH . ' includes/inc_constant.php ' ); // 包含预定义常量文件
require (ROOT_PATH . ' includes/cls_ecshop.php ' ); // 基础类 文件
require (ROOT_PATH . ' includes/cls_error.php ' ); // 错误类 文件
require (ROOT_PATH . ' includes/lib_time.php ' ); // 时间函数
require (ROOT_PATH . ' includes/lib_base.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_common.php ' ); // 基础函数库
require (ROOT_PATH . ' includes/lib_main.php ' ); // 公用函数库
require (ROOT_PATH . ' includes/lib_insert.php ' ); // 动态内容函数库
require (ROOT_PATH . ' includes/lib_goods.php ' ); // 商品相关函数库
require (ROOT_PATH . ' includes/lib_article.php ' ); // 文章及文章分类相关函数库
/* 对用户传入的变量进行转义操作。 */
if ( ! get_magic_quotes_gpc ())
{
if ( ! empty ( $_GET ))
{
$_GET = addslashes_deep( $_GET );
}
if ( ! empty ( $_POST ))
{
$_POST = addslashes_deep( $_POST );
}
$_COOKIE = addslashes_deep( $_COOKIE );
$_REQUEST = addslashes_deep( $_REQUEST );
}
/* 创建 ECSHOP 对象 */
$ecs = new ECS( $db_name , $prefix ); // 参数说明:数据库名 表前缀
define ( ' DATA_DIR ' , $ecs -> data_dir()); // 数据目录
define ( ' IMAGE_DIR ' , $ecs -> image_dir()); // 图片目录
/* 初始化数据库类 */
require (ROOT_PATH . ' includes/cls_mysql.php ' );
$db = new cls_mysql( $db_host , $db_user , $db_pass , $db_name );
/* 设置不允许进行缓存的表 */
$db -> set_disable_cache_tables( array ( $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ) , $ecs -> table( ' cart ' )));
$db_host = $db_user = $db_pass = $db_name = NULL ;
/* 创建错误处理对象 */
$err = new ecs_error( ' message.dwt ' );
/* 载入系统参数 */
$_CFG = load_config(); // 载入配置信息函数在lib_common.php
/* 载入语言文件 */
require (ROOT_PATH . ' languages/ ' . $_CFG [ ' lang ' ] . ' /common.php ' );
if ( $_CFG [ ' shop_closed ' ] == 1 )
{
/* 商店关闭了,输出关闭的消息 */
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
die ( ' <div style="margin: 150px; text-align: center; font-size: 14px"><p> ' . $_LANG [ ' shop_closed ' ] . ' </p><p> ' . $_CFG [ ' close_comment ' ] . ' </p></div> ' );
}
// 判断是否为搜索引擎蜘蛛 函数在lib_main.php
if (is_spider())
{
/* 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中 */
if ( ! defined ( ' INIT_NO_USERS ' ))
{
define ( ' INIT_NO_USERS ' , true );
/* 整合UC后,如果是蜘蛛访问,初始化UC需要的常量 */
if ( $_CFG [ ' integrate_code ' ] == ' ucenter ' )
{
$user = & init_users();
}
}
$_SESSION = array ();
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
}
// 非搜索引擎蜘蛛,记录session
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 初始化session */
include (ROOT_PATH . ' includes/cls_session.php ' );
$sess = new cls_session( $db , $ecs -> table( ' sessions ' ) , $ecs -> table( ' sessions_data ' ));
define ( ' SESS_ID ' , $sess -> get_session_id());
}
// 如果使用Smarty
if ( ! defined ( ' INIT_NO_SMARTY ' ))
{
header ( ' Cache-control: private ' );
header ( ' Content-type: text/html; charset= ' . EC_CHARSET);
/* 创建 Smarty 对象。 */
require (ROOT_PATH . ' includes/cls_template.php ' );
$smarty = new cls_template;
$smarty -> cache_lifetime = $_CFG [ ' cache_time ' ]; // 缓存时间
$smarty -> template_dir = ROOT_PATH . ' themes/ ' . $_CFG [ ' template ' ]; // 模板所在
$smarty -> cache_dir = ROOT_PATH . ' temp/caches ' ; // 缓存所在
$smarty -> compile_dir = ROOT_PATH . ' temp/compiled ' ; // 模板编译后的文件所在
if ((DEBUG_MODE & 2 ) == 2 ) // 如果常量DEBUG_MODE值为 2、3、6、7
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
{
$smarty -> direct_output = true ; // 不使用缓存直接输出
$smarty -> force_compile = true ; // 强行编译
}
else
{
$smarty -> direct_output = false ;
$smarty -> force_compile = false ;
}
$smarty -> assign( ' lang ' , $_LANG );
$smarty -> assign( ' ecs_charset ' , EC_CHARSET);
if ( ! empty ( $_CFG [ ' stylename ' ])) // 如果自己定义样式文件就用自己的
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style_ ' . $_CFG [ ' stylename ' ] . ' .css ' );
}
else
{
$smarty -> assign( ' ecs_css_path ' , ' themes/ ' . $_CFG [ ' template ' ] . ' /style.css ' );
}
}
// 非搜索引擎爬虫,记录用户信息
if ( ! defined ( ' INIT_NO_USERS ' ))
{
/* 会员信息 初始化会员数据 lib_common.php */
$user =& init_users();
if ( ! isset ( $_SESSION [ ' user_id ' ]))
{
/* 获取投放站点的名称 */
$site_name = isset ( $_GET [ ' from ' ]) ? $_GET [ ' from ' ] : addslashes ( $_LANG [ ' self_site ' ]);
$from_ad = ! empty ( $_GET [ ' ad_id ' ]) ? intval ( $_GET [ ' ad_id ' ]) : 0 ;
$_SESSION [ ' from_ad ' ] = $from_ad ; // 用户点击的广告ID
$_SESSION [ ' referer ' ] = stripslashes ( $site_name ); // 用户来源
unset ( $site_name );
if ( ! defined ( ' INGORE_VISIT_STATS ' ))
{
visit_stats();
}
}
if ( empty ( $_SESSION [ ' user_id ' ]))
{
if ( $user -> get_cookie())
{
/* 如果会员已经登录并且还没有获得会员的帐户余额、积分以及优惠券 */
if ( $_SESSION [ ' user_id ' ] > 0 )
{
update_user_info();
}
}
else
{
$_SESSION [ ' user_id ' ] = 0 ;
$_SESSION [ ' user_name ' ] = '' ;
$_SESSION [ ' email ' ] = '' ;
$_SESSION [ ' user_rank ' ] = 0 ;
$_SESSION [ ' discount ' ] = 1.00 ;
if ( ! isset ( $_SESSION [ ' login_fail ' ]))
{
$_SESSION [ ' login_fail ' ] = 0 ;
}
}
}
/* 设置推荐会员 */
if ( isset ( $_GET [ ' u ' ]))
{
set_affiliate();
}
if ( isset ( $smarty ))
{
$smarty -> assign( ' ecs_session ' , $_SESSION );
}
}
if ((DEBUG_MODE & 1 ) == 1 ) // 如果常量DEBUG_MODE值为 1、3、5、7
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
{
error_reporting ( E_ALL ); // 报告全部错误
}
else
{
error_reporting ( E_ALL ^ E_NOTICE ); // 报告除E_NOTICE以外的所有错误
}
if ((DEBUG_MODE & 4 ) == 4 ) // 如果常量DEBUG_MODE值为 4、5、6、7
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
{
include (ROOT_PATH . ' includes/lib.debug.php ' ); //
}
/* 判断是否支持 Gzip 模式 如果使用SMARTY同时设置了网页压缩,则启用压缩 */
if ( ! defined ( ' INIT_NO_SMARTY ' ) && gzip_enabled())
{
ob_start ( ' ob_gzhandler ' ); // 压缩后放入缓冲区
}
else
{
ob_start (); // 打开缓冲区,把下面要显示的内容先缓在服务器
}
/*
ob_start相关函数了解:
1、Flush:刷新缓冲区的内容,输出。
函数格式:flush()
说明:这个函数经常使用,效率很高。
2、ob_start :打开输出缓冲区
函数格式:void ob_start(void)
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。
3 、ob_get_contents :返回内部缓冲区的内容。
使用方法:string ob_get_contents(void)
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
4、ob_get_length:返回内部缓冲区的长度。
使用方法:int ob_get_length(void)
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
使用方法:void ob_end_flush(void)
说明:这个函数发送输出缓冲区的内容(如果有的话)。
6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
使用方法:void ob_end_clean(void)
说明:这个函数不会输出内部缓冲区的内容而是把它删除!
7、ob_implicit_flush:打开或关闭绝对刷新
使用方法:void ob_implicit_flush ([int flag])
说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
*/
?>