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)相关推荐

  1. elasticsearch index、create和update的源码分析

    https://segmentfault.com/a/1190000011272749 社区里面有人问了如下一个问题: 执行 bulk 索引文档的时候,用 index 或者 create 类型并且自定 ...

  2. vuex 源码分析_Vuex框架原理与源码分析

    Vuex是一个专为Vue服务,用于管理页面数据状态.提供统一数据操作的生态系统.它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mutation - state ch ...

  3. Vuex框架原理与源码分析

    Vuex是一个专为Vue服务,用于管理页面数据状态.提供统一数据操作的生态系统.它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mutation - state ch ...

  4. vuex源码分析-知其然,知其所以然

    前言:what? vuex是啥? Vuex是一个专为Vue服务,用于管理页面数据状态.提供统一数据操作的生态系统.它集中于MVC模式中的Model层,规定所有的数据操作必须通过 action - mu ...

  5. Android shortcut的使用及源码分析

    Android shortcut的使用及源码分析 最近遇到了一个切换国家码后部分应用的shortcut未更新的问题,就学习了shortcut的相关知识,在这里分享一下我了解的知识,希望能对大家有帮助. ...

  6. ArrayList底层源码分析

    声明:本文为作者原创,请勿装载,如过转载,请注明转载地址 文章目录 ArrayList底层源码分析 1. 继承Serializable接口 2. 继承Cloneable接口 2.1 浅拷贝 2.2 深 ...

  7. 转载 ECSHOP 源码分析(includes/init.php)

    Code: 转载  ECSHOP 源码分析(includes/init.php) 收藏 <?php /** * ECSHOP 前台公用文件 * ========================= ...

  8. ElasticStack系列之十六 ElasticSearch5.x index/create 和 update 源码分析

    开篇 在ElasticSearch 系列十四中提到的问题即 ElasticStack系列之十四 & ElasticSearch5.x bulk update 中重复 id 性能骤降,继续这个问 ...

  9. cl.zk0.info/index.php,兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建

    原标题:兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建 btcpool矿池-测试环境搭建及使用cgminer测试 本文档基于Ubuntu 16.04 LTS, 64 Bits. 安装Bi ...

  10. 一、后台首页index.php【dedecms后台源码分析】

    后台目录dede目录的所有问价的源码分析 使用的dedecms的版本5.7(2012-04-01更新) 后台登陆之后的首页分析dede/index.php <?php /*** 管理后台首页** ...

最新文章

  1. 【Git】git 与远程库交互
  2. 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)
  3. 设置***遇到一个小问题
  4. 立足于飞秋和即时通讯软件市场
  5. 53 -leetcode 7. 整数反转
  6. python == 字符编码
  7. 说出x的结果,并解释为什么?
  8. java窗口全屏_java如何改全屏为窗口?求啊啊啊啊
  9. 整人输入指定内容退出html,整人代码
  10. Pascal voc 数据集下载网址
  11. 刷流量php网站源码,在线模拟刷网站PV流量源码
  12. delphi 可以自定义边框的文本框TSkinNormalEdit思路(QQ2011风格)
  13. 微信推送封面尺寸_微信公众号文章封面图尺寸是多少?如何快速制作封面图?...
  14. 计算机网络学习 - 网卡
  15. Android Studio插件整理
  16. 如何解决 CAD 启动非常慢的问题
  17. python的一些技巧操作,提高编码效率
  18. java实现简单的文件下载
  19. 车间调度标准测试集汇总-FJSP、PFSP、JSP、HFSP和分布式车间调度测试集
  20. 【转】ARM经典300问

热门文章

  1. Odoo免费开源MES功能应用简介
  2. 关于WebBrowser(浏览器)控件的调用
  3. 桌面下雪软件测试工程师,桌面下雪
  4. Sqlite加密问题
  5. 3dmax:3dmax三维VR渲染设置之高级灯光渲染(Vray—VR灯光、VRIES、VR环境光、VR太阳)图文教程之详细攻略
  6. CoolHC Volume 2 By CoolFire
  7. 2021电工杯数学建模B题代码与思路(Python)
  8. 操作系统实验报告(一) 进程管理与进程通信
  9. Linux常用命令详解2
  10. 1. Windows网络编程(C++ Socket编程)