ecshop index.php,]ECSHOP 源码分析(install/index.php1)
define('IN_ECS', true);
/* 报告所有错误 */
@ini_set ('display_erros', 1);
error_reporting(E_ALL^E_NOTICE);
/* 定义站点根 */
/**************************************************
str_replace
字符串取代。
语法: string str_replace(string needle, string str, string haystack);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。
http://blog.sina.com.cn/s/mailto:mlevine@adtraq.com (11-Apr-1999) 指出在 PHP 3.0.7 版,本函数有些 bug,
而 http://blog.sina.com.cn/s/mailto:nadeem@bleh.org (05-Jun-1999) 补充在 PHP 3.0.8 版本函数就回复正常了。
使用范例
下例将 %body% 以 black 取代
$bodytag = str_replace("%body%", "black", "
");
echo $bodytag;
?>
***************************************************/
define('ROOT_PATH', str_replace('install/index.php', '', str_replace('\', '/', __FILE__)));
$selected_lang = isset($_GET['lang']) ? $_GET['lang'] : 'zh_cn';
require_once(ROOT_PATH . 'install/lang/' . $selected_lang . '.php');
header("content-type:text/html; charset=utf-8");
$step = isset($_REQUEST['step']) ? $_REQUEST['step'] : 'language';
if (file_exists(ROOT_PATH . 'data/install.lock'))
{
$step = 'message';
$message = $lang['install_locked'];
}
if (file_exists(ROOT_PATH . 'includes/install.lock'))
{
$step = 'message';
$message = $lang['install_locked_1'];
}
/* 清除所有和文件操作相关的状态信息 */
clearstatcache();
switch ($step)
{
/*------------------------------------------------------ */
//-- 选择语言
/*------------------------------------------------------ */
case 'language' :
/* cookie探针 */
setcookie('ecshop_installer', 'cookie_able', time()+3600, '/');
break;
/*------------------------------------------------------ */
//-- 阅读用户协议
/*------------------------------------------------------ */
case 'license' :
break;
/*------------------------------------------------------ */
//-- 检查系统环境
/*------------------------------------------------------ */
case 'check' :
include_once(ROOT_PATH . 'includes/cls_image.php');
include_once(ROOT_PATH . 'includes/lib_common.php');
include_once(ROOT_PATH . 'includes/cls_dir_access.php');
$directories[] = 'admin';
$directories[] = 'cert';
$directories[] = 'data';
$directories[] = 'data/afficheimg';
$directories[] = 'data/brandlogo';
$directories[] = 'data/cardimg';
$directories[] = 'data/feedbackimg';
$directories[] = 'data/packimg';
$directories[] = 'images';
$directories[] = 'images/upload';
$directories[] = 'templates';
$directories[] = 'templates/backup';
$directories[] = 'templates/caches';
$directories[] = 'templates/compiled';
$directories[] = 'templates/compiled/admin';
$directories[] = 'templates/library';
$writable = '';
$disabled = '';
$mark = 0;
/***********************************************
· foreach
在 PHP4中,新增了一个循环语句 foreach,它很像是 perl和其它的语言,你可以给它一个阵列,让它来取出阵列的值。它有下列这二个语法,第二个语法是较次要的,但是可用来作为第一个语法的延伸。
foreach(array_ as $value) statement
foreach(array_ as $key => $value) statement
第一个形式的循环,它会在每个循环上,将目前元素的值分配给 $value,并且向后移动阵列的內部指针,所以在下一个循环的时候,你就会看到下一个元素了。
第二个形式的循环和第一个是相同的,不同的是它会在每个循环将目前元素的索引值分配给变量 $key。
注意 : 当 foreach第一次开始执行的时候,它会把阵列的內部指针重新设定到阵列的第一个元素,意思是说,在使用 foreach之前,你不必再去调用 reset( )。
注意 : foreach的功能是复制,而不是阵列它本身,因此并不会改变阵列指针
下面范例的功能都是相同的 :
reset ($arr);
while (list(, $value) = each ($arr)) {
echo "Value: $value
";
}
foreach ($arr as $value) {
echo "Value: $value
";
}
?>
下面范例的功能也都是相同的 :
reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value
";
}
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value
";
}
?>
以下的范例将说明 foreach的用法 :
$a = array (1, 2, 3, 17);
foreach ($a as $v) {
print "Current value of $a: $v.
";
}
$a = array (
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach($a as $k => $v) {
print "$a[$k] => $v.
";
}
?>
************************************************/
foreach ($directories AS $key=>$val)
{
$writable .= '
';
/*****************************************************
str_repeat
(PHP4 >= 4.0b4)
str_repeat --- 重複字串
語法 : string str_repeat (string input, int multiplier)
說明 :
傳回 input重複 multiplier次後的字串,參數 multiplier必須大於 0。
echo str_repeat ("-=", 10);
?>
上面的範例將會輸出 "-=-=-=-=-=-=-=-=-=-="。
*****************************************************/
$writable .= ''. $val .' ' .str_repeat('.', (80-strlen($val)));
$mark = check_file(ROOT_PATH . $val);
if ($mark < 2)
{
$writable .= "$lang[cannt_write]";
$disabled = ' disabled="true"';
}
else
{
$writable .= "$lang[can_write]";
}
$writable .= '
';
}
$info_format = '
%s %s %s';
$system_info = '';
$system_info .= sprintf($info_format, $lang['php_os'], str_repeat('.', (83-strlen($lang['php_os']))), PHP_OS);
$system_info .= sprintf($info_format, $lang['php_ver'], str_repeat('.', (81-strlen($lang['php_ver']))), PHP_VERSION);
/******************************************
intval
(PHP 3, PHP 4, PHP 5)
intval -- 获取变量的整数值
描述
int intval ( mixed var [, int base] )
通过使用特定的进制转换(默认是十进制),返回变量 var 的 integer 数值。
var 可以是任何标量类型。intval() 不能用于 array 或 object。
注: 除非 var 参数是字符串,否则 intval() 的 base 参数不会有效果。
参见 floatval()、strval()、settype() 和 类型戏法。
diskfreespace
取得目录所在的剩余可用空间。
语法: float diskfreespace(string directory);
返回值: 浮点数
函数种类: 文件存取
内容说明
本函数用来取得目录所在储存装置的剩余空间,单位为位组 (byte)。
使用范例
本例可以知道根目录的剩余空间。
$df = diskfreespace("/");
?>
********************************************/
$freespace = intval(diskfreespace(dirname(__FILE__)) / (1024 * 1024));
if ($freespace < 10)
{
$freespace = '' . $freespace . '';
}
$freespace .= 'M';
$system_info .= sprintf($info_format, $lang['disk_space'], str_repeat('.', (83-strlen($lang['disk_space']))), $freespace);
/* 检查图片处理函数库 */
$gd = gd_version();
if ($gd == 0)
{
$gd_ver = $lang['not_support'];
}
elseif ($gd == 1)
{
$gd_ver = '1.0';
}
else
{
$gd_ver = '2.0';
}
/**************************************************
function_exists
检查函数是否已定义。
语法: int function_exists(string function_name);
返回值: 整数
函数种类: PHP 系统功能
内容说明
本函数用来检查指定的函数是否已经定义。参数 function_name 为待检查的函数名称。
若已定义指定的函数则返回 true 值,其它情形均返回 false 值。
***************************************************/
$jpeg_enabled = function_exists('imagecreatefromjpeg') ? $lang['support'] : $lang['not_support'];
$gif_enabled = function_exists('imagecreatefromgif') ? $lang['support'] : $lang['not_support'];
$png_enabled = function_exists('imagecreatefrompng') ? $lang['support'] : $lang['not_support'];
$system_info .= sprintf($info_format, $lang['gd_version'], str_repeat('.', (81-strlen($lang['gd_version']))), $gd_ver);
$system_info .= sprintf($info_format, $lang['jpeg'], str_repeat('.', (83-strlen($lang['jpeg']))), $jpeg_enabled);
$system_info .= sprintf($info_format, $lang['gif'], str_repeat('.', (83-strlen($lang['gif']))), $gif_enabled);
$system_info .= sprintf($info_format, $lang['png'], str_repeat('.', (83-strlen($lang['png']))), $png_enabled);
/* 检查系统是否支持以dwt,lib,dat为扩展名的文件,也就是在檢查文件的完整性 */
$filename = '';
$temp_str = '';
$output_msg = '';
$support_dwt = false;
$support_lib = false;
$support_dat = false;
$filename = ROOT_PATH . 'themes/default/index.dwt';
if (file_exists($filename))
{
$support_dwt = true;
}
else
{
$temp_str .= $lang['cannt_support_dwt'] . ',';
}
$filename = ROOT_PATH . 'themes/default/library/member.lbi';
if (file_exists($filename))
{
$support_lib = true;
}
else
{
$temp_str .= $lang['cannt_support_lib'] . ',';
}
$filename = ROOT_PATH . 'includes/ip/ipdata.dat';
if (file_exists($filename))
{
$support_dat = true;
}
else
{
$temp_str .= $lang['cannt_support_dat'];
}
if ($support_dwt && $support_lib && $support_dat)
{
$output_msg = $lang['support_dld'];
}
else
{
$temp_str = preg_replace("/,$/", '', $temp_str);
$output_msg = ''. $temp_str . '';
$disabled = ' disabled="true"';
}
$system_info .= sprintf($info_format, $lang['has_supported_dld'], str_repeat('.', (88-strlen($lang['has_supported_dld']))), $output_msg);
/* 服务器是否安全模式开启 */
if (ini_get('safe_mode') == '1')
{
$output_msg = $lang['safe_mode_on2'];
}
else
{
$output_msg = $lang['safe_mode_off'];
}
$system_info .= sprintf($info_format, $lang['safe_mode'], str_repeat('.', (91-strlen($lang['safe_mode']))), $output_msg);
if (isset($_COOKIE['ecshop_installer']) && $_COOKIE['ecshop_installer'] == 'cookie_able')
{
$cookie_able = true;
/* 清除cookie探针 */
setcookie('ecshop_installer', 'cookie_able', time()-3600, '/');
}
else
{
$cookie_able = false;
}
/* 检查session的设置 */
$sess_settings = session_get_cookie_params();
$system_info .= '
';
$system_info .= ''. $lang['sess_path'] .' ' . str_repeat('.', (82-strlen($lang['sess_path'])));
$system_info .= (!$cookie_able && $sess_settings['path'] != '' && $sess_settings['path'] != '/') ?
" $lang[warning_path]" :
(' ' . $sess_settings['path']);
$system_info .= '
';
break;
ecshop index.php,]ECSHOP 源码分析(install/index.php1)相关推荐
- elasticsearch index、create和update的源码分析
https://segmentfault.com/a/1190000011272749 社区里面有人问了如下一个问题: 执行 bulk 索引文档的时候,用 index 或者 create 类型并且自定 ...
- vuex 源码分析_Vuex框架原理与源码分析
Vuex是一个专为Vue服务,用于管理页面数据状态.提供统一数据操作的生态系统.它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mutation - state ch ...
- Vuex框架原理与源码分析
Vuex是一个专为Vue服务,用于管理页面数据状态.提供统一数据操作的生态系统.它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mutation - state ch ...
- vuex源码分析-知其然,知其所以然
前言:what? vuex是啥? Vuex是一个专为Vue服务,用于管理页面数据状态.提供统一数据操作的生态系统.它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mu ...
- Android shortcut的使用及源码分析
Android shortcut的使用及源码分析 最近遇到了一个切换国家码后部分应用的shortcut未更新的问题,就学习了shortcut的相关知识,在这里分享一下我了解的知识,希望能对大家有帮助. ...
- ArrayList底层源码分析
声明:本文为作者原创,请勿装载,如过转载,请注明转载地址 文章目录 ArrayList底层源码分析 1. 继承Serializable接口 2. 继承Cloneable接口 2.1 浅拷贝 2.2 深 ...
- 转载 ECSHOP 源码分析(includes/init.php)
Code: 转载 ECSHOP 源码分析(includes/init.php) 收藏 <?php /** * ECSHOP 前台公用文件 * ========================= ...
- ElasticStack系列之十六 ElasticSearch5.x index/create 和 update 源码分析
开篇 在ElasticSearch 系列十四中提到的问题即 ElasticStack系列之十四 & ElasticSearch5.x bulk update 中重复 id 性能骤降,继续这个问 ...
- cl.zk0.info/index.php,兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建
原标题:兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建 btcpool矿池-测试环境搭建及使用cgminer测试 本文档基于Ubuntu 16.04 LTS, 64 Bits. 安装Bi ...
- 一、后台首页index.php【dedecms后台源码分析】
后台目录dede目录的所有问价的源码分析 使用的dedecms的版本5.7(2012-04-01更新) 后台登陆之后的首页分析dede/index.php <?php /*** 管理后台首页** ...
最新文章
- 【Git】git 与远程库交互
- 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)
- 设置***遇到一个小问题
- 立足于飞秋和即时通讯软件市场
- 53 -leetcode 7. 整数反转
- python == 字符编码
- 说出x的结果,并解释为什么?
- java窗口全屏_java如何改全屏为窗口?求啊啊啊啊
- 整人输入指定内容退出html,整人代码
- Pascal voc 数据集下载网址
- 刷流量php网站源码,在线模拟刷网站PV流量源码
- delphi 可以自定义边框的文本框TSkinNormalEdit思路(QQ2011风格)
- 微信推送封面尺寸_微信公众号文章封面图尺寸是多少?如何快速制作封面图?...
- 计算机网络学习 - 网卡
- Android Studio插件整理
- 如何解决 CAD 启动非常慢的问题
- python的一些技巧操作,提高编码效率
- java实现简单的文件下载
- 车间调度标准测试集汇总-FJSP、PFSP、JSP、HFSP和分布式车间调度测试集
- 【转】ARM经典300问
热门文章
- Odoo免费开源MES功能应用简介
- 关于WebBrowser(浏览器)控件的调用
- 桌面下雪软件测试工程师,桌面下雪
- Sqlite加密问题
- 3dmax:3dmax三维VR渲染设置之高级灯光渲染(Vray—VR灯光、VRIES、VR环境光、VR太阳)图文教程之详细攻略
- CoolHC Volume 2 By CoolFire
- 2021电工杯数学建模B题代码与思路(Python)
- 操作系统实验报告(一) 进程管理与进程通信
- Linux常用命令详解2
- 1. Windows网络编程(C++ Socket编程)