管理中心公用文件init.php源码分析
2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家
/** * ERC 管理中心公用文件 * ============================================================================ */ if (!defined('IN_ERC')) // defined()函数检查某常量是否存在,若常量存在,则返回 true,否则返回 false。 { die('Hacking attempt'); } define('ERC_ADMIN', true); //有什么作用,还不是很清楚! error_reporting(E_ALL); if (__FILE__ == '')//在什么样的情况下__FILE__这个魔法变量才会为空,搞不清楚! { die('Fatal error code: 0'); } /* 取得当前网站所在的根目录 很不错的方法*/ //echo __FILE__.'<br>'; //echo str_replace('\\', '/', __FILE__).'<br>'; // 自己注意了,第一个参数是str_replace函数要在字符串查找替换的字符,老忘! //echo str_replace('admin/includes/init.php', '', str_replace('\\', '/', __FILE__)); // 注意了,这个值后还有个'/' 正斜杠 !!!! define('ROOT_PATH', str_replace('admin/includes/init.php', '', str_replace('\\', '/', __FILE__))); /* 初始化设置 */ /** 本指令设定了一个脚本所能够申请到的最大内存字节数。这有助于防止写得不好的脚本消耗光服务器上的可用内存,memory_limit是设置PHP使用内存时空间,一般设置为内存的四分之一,应该就查不多了。如512M内存设置128M,1G内存设置256M。设置太大会影响系统速度,因为系统和数据库及其他程序同样需要内存空间,一般系统和数据库内存空间是自己分配的。 */ @ini_set('memory_limit', '64M'); /** * 客户端缓存时间 用来控制缓存的会话页面的存活周期。注意session.cache_expire的值的单位为分钟! */ @ini_set('session.cache_expire',180); /* 不尝试从其他地方获得sessionid没怎么搞清楚*/ @ini_set('session.use_trans_sid', 0); /*sessionid的传递方式,默认是cookie,推荐使用*/ @ini_set('session.use_cookies',1); /*是否自动启动session,默认为不是,不需要修改*/ @ini_set('session.auto_start', 0); @ini_set('display_errors',1); /* DIRECTORY_SEPARATOR:路径分隔符,linux上就是’/’ windows上是’\’ PATH_SEPARATOR:include多个路径使用,在win下,当你要include多个路径的话,你要用”;”隔开,但在linux下就使用”:”隔开的。 这2个常量的使用能够避免不同平台的兼容性问题。 */ //echo DIRECTORY_SEPARATOR; if (DIRECTORY_SEPARATOR == '\\') { @ini_set('include_path','.;' . ROOT_PATH); } else { @ini_set('include_path','.:' . ROOT_PATH); } if (file_exists(ROOT_PATH . 'data/config.php')) { include(ROOT_PATH . 'data/config.php'); } else { include(ROOT_PATH . 'includes/config.php');// 会有这个文件吗??? } if (defined('DEBUG_MODE') == false)//调试模式 { define('DEBUG_MODE', 0);// 它是用来控制缓存的 只要DEBUG_MODE的值不为2 就读缓存 } /* php中环境变量 PHP_OS—–服务器端的操作系统 ,值为(WINNT,WIN32等) 可以这么使用例如: eregi(”WIN”,PHP_OS) ? “do somthing” : “do other thing”; PHP_VERSION —– 服务器端的PHP程序版本 可以这么使用例如: echo PHP_VERSION; */ // echo PHP_VERSION; if (PHP_VERSION >= '5.1' && !empty($timezone)) { date_default_timezone_set($timezone);// 设置时区 } /* PHP以 CGI 方式运行,二者就有明显不同的差异。 echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi) echo $_SERVER['PHP_SELF']; // (/admin/test.php) */ //echo $_SERVER['PHP_SELF']; 输出:/ERC/admin/***.php当前正在执行脚本的文件名,是当前!!! //echo $_SERVER['SCRIPT_NAME']; //echo __FILE__; 输出: D:\www\ERC\admin\includes\init.php绝对路径!!! if (isset($_SERVER['PHP_SELF'])) { define('PHP_SELF', $_SERVER['PHP_SELF']); } else { define('PHP_SELF', $_SERVER['SCRIPT_NAME']); } 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 . 'admin/includes/lib_main.php');//管理中心公用函数库 require(ROOT_PATH . 'admin/includes/cls_exchange.php');//后台自动操作数据库的类文件 /* 对用户传入的变量进行转义操作 */ /* 取得 PHP 环境变数 magic_quotes_gpc 的值 本函式取得 PHP 环境设定的变数 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。传回 0 表示关闭本功能;传回 1 表示本功能开启。 当 magic_quotes_gpc 开启时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。 */ // echo get_magic_quotes_gpc(); 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); } /* 对路径进行安全处理 */ // echo PHP_SELF; if (strpos(PHP_SELF, '.php/') !== false) //strpos() 函数返回字符串在另一个字符串中第一次出现的位置 { //echo PHP_SELF."<br>"; //echo substr(PHP_SELF, 0, strpos(PHP_SELF, '.php/') + 4) . "\n"; go_header("Location:" . substr(PHP_SELF, 0, strpos(PHP_SELF, '.php/') + 4) . "\n");//这个换行有什么意义吗? exit(); } /* 创建 ECSHOP 对象 */ $ecs = new ECS($db_name, $prefix); //echo $ecs->data_dir("asdf"); 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_host = $db_user = $db_pass = $db_name = NULL; /* 创建错误处理对象 */ $err = new ecs_error('message.htm'); /* 初始化session */ require(ROOT_PATH . 'includes/cls_session.php'); $sess = new cls_session($db, $ecs->table('sessions'), $ecs->table('sessions_data'), 'ECSCP_ID'); /* 初始化 action */ if (!isset($_REQUEST['act'])) { $_REQUEST['act'] = ''; } elseif (($_REQUEST['act'] == 'login' || $_REQUEST['act'] == 'logout' || $_REQUEST['act'] == 'signin') && strpos(PHP_SELF, '/privilege.php') === false)//防黑客??? { $_REQUEST['act'] = ''; } elseif (($_REQUEST['act'] == 'forget_pwd' || $_REQUEST['act'] == 'reset_pwd' || $_REQUEST['act'] == 'get_pwd') && strpos(PHP_SELF, '/get_password.php') === false) { $_REQUEST['act'] = ''; } /* 载入系统参数 */ $_CFG = load_config(); // 载入temp\static_caches\shop_config.php没有此文件则从数据库erc_shop_config查询 //print_r($_CFG); // TODO : 登录部分准备拿出去做,到时候把以下操作一起挪过去 if ($_REQUEST['act'] == 'captcha')// 图形验证码 { include(ROOT_PATH . 'includes/cls_captcha.php'); $img = new captcha('../data/captcha/'); @ob_end_clean(); //清除之前出现的多余输入 $img->generate_image(); exit; } //$_CFG['lang'] = "zh_tw";测试 require(ROOT_PATH . 'languages/' .$_CFG['lang']. '/admin/common.php');// 管理中心共用语言文件 require(ROOT_PATH . 'languages/' .$_CFG['lang']. '/admin/log_action.php');// 管理中心管理员操作内容语言文件 // 查找某一php文件,就调用此php页面语言包 // echo basename(PHP_SELF);还回基本文件名 if (file_exists(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/admin/' . basename(PHP_SELF))) { include(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/admin/' . basename(PHP_SELF)); } if (!file_exists('../temp/caches')) { @mkdir('../temp/caches', 0777); @chmod('../temp/caches', 0777);// chmod -- 改变文件模式 } if (!file_exists('../temp/compiled/admin')) { @mkdir('../temp/compiled/admin', 0777); @chmod('../temp/compiled/admin', 0777); } clearstatcache();// clearstatcache -- 清除文件状态缓存此函数具体还不知道到底怎么用 /* 如果有新版本,升级 */ if (!isset($_CFG['ecs_version'])) { $_CFG['ecs_version'] = 'v2.0.5'; } if (preg_replace('/(?:\.|\s+)[a-z]*$/i', '', $_CFG['ecs_version']) != preg_replace('/(?:\.|\s+)[a-z]*$/i', '', VERSION) && file_exists('../upgrade/index.php')) { // 转到升级文件 go_header("Location: ../upgrade/index.php\n"); exit; } |
回答:
收藏了!THX |
支持共享 |
收藏了,学习一下~ |
不像是2.7的吧! |
如假包换 |
大家也帮我分析分析我没看懂的地方啊 |
谢谢楼主共享 很强大~ |
囧,看了几天init.php,快看完了,看到这个帖子,再一对照,不是2.7版本,更囧 |
你这里面加入了防黑客的代码,2.7的没有,难道是删除了???? |
最近更新
常用插件
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
ecshop热门问答
ecshop热门资料
ecshop趣玩
ecshop二次开发
ecshop货到付款?
ecshoppackages
ecshopADDR
ecshopechop
ecshop数据库安装
ecshophotmail
ecshop收藏
ecshop用户协议
ecshop免运费
ecshopCRC
ecshop晓天
ecshop能带
ecshop产品订购
phphproce
ecshop台数
ecshopJmail
ecshop硬盘
ecshop视频播放器
ecshop服务器资源
ecshop淘宝商品
ecshop推荐朋友
ecshop524
ecshop搜索结果
ecshop404未找到
ecshop京东网
ecshop页面打不开
ecshop销量
ecshopagent