|
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。 mlevine@adtraq.com (11-Apr-1999) 指出在 PHP 3.0.7 版,本函数有些 bug, 而 nadeem@bleh.org (05-Jun-1999) 补充在 PHP 3.0.8 版本函数就回复正常了。 使用范例 下例将 %body% 以 black 取代 <?php $bodytag = str_replace("%body%", "black", "<body text=%body%>"); 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_expression as $value) statement foreach(array_expression as $key => $value) statement 第一个形式的循环,它会在每个循环上,将目前元素的值分配给 $value,并且向后移动阵列的內部指针,所以在下一个循环的时候,你就会看到下一个元素了。 第二个形式的循环和第一个是相同的,不同的是它会在每个循环将目前元素的索引值分配给变量 $key。 注意 : 当 foreach第一次开始执行的时候,它会把阵列的內部指针重新设定到阵列的第一个元素,意思是说,在使用 foreach之前,你不必再去调用 reset( )。 注意 : foreach的功能是复制,而不是阵列它本身,因此并不会改变阵列指针 下面范例的功能都是相同的 : <?php reset ($arr); while (list(, $value) = each ($arr)) { echo "Value: $value<br> "; }
foreach ($arr as $value) { echo "Value: $value<br> "; } ?>
下面范例的功能也都是相同的 :
<?php reset ($arr); while (list($key, $value) = each ($arr)) { echo "Key: $key; Value: $value<br> "; } foreach ($arr as $key => $value) { echo "Key: $key; Value: $value<br> "; } ?>
以下的范例将说明 foreach的用法 :
<?php $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 .= '<li>'; /***************************************************** str_repeat (PHP4 >= 4.0b4) str_repeat --- 重複字串 語法 : string str_repeat (string input, int multiplier) 說明 : 傳回 input重複 multiplier次後的字串,參數 multiplier必須大於 0。 <?php echo str_repeat ("-=", 10); ?> 上面的範例將會輸出 "-=-=-=-=-=-=-=-=-=-="。
*****************************************************/ $writable .= '<strong>'. $val .'</strong> ' .str_repeat('.', (80-strlen($val)));
$mark = check_file(ROOT_PATH . $val); if ($mark < 2) { $writable .= "<span style='color: #C00000'>$lang[cannt_write]</span>"; $disabled = ' disabled="true"'; } else { $writable .= "<span style='color: green'>$lang[can_write]</span>"; }
$writable .= '</li>'; }
$info_format = '<li><strong>%s</strong> %s %s</li>'; $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 = '<strong style="color:red">' . $freespace . '</strong>'; } $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 = '<strong style="color:red;">'. $temp_str . '</strong>'; $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 .= '<li>'; $system_info .= '<strong>'. $lang['sess_path'] .'</strong> ' . str_repeat('.', (82-strlen($lang['sess_path']))); $system_info .= (!$cookie_able && $sess_settings['path'] != '' && $sess_settings['path'] != '/') ? " <span style='color: #C00000'>$lang[warning_path]</span>" : (' ' . $sess_settings['path']); $system_info .= '</li>'; break;
|