📄 lib_installer.php
字号:
include(ROOT_PATH . 'data/config.php');
include_once(ROOT_PATH . 'includes/cls_mysql.php');
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
if (file_exists(ROOT_PATH . 'install/data/inc_goods_type_' . $lang . '.php'))
{
include(ROOT_PATH . 'install/data/inc_goods_type_' . $lang . '.php');
}
else
{
include(ROOT_PATH . 'install/data/inc_goods_type_zh_cn.php');
}
foreach ($attributes as $key=>$val)
{
if (!in_array($key, $goods_types))
{
continue;
}
if (!$db->query($val['cat'], 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
return false;
}
$cat_id = $db->Insert_ID();
$sql = str_replace("{cat_id}", $cat_id, $val['attr']);
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
return false;
}
}
return true;
}
/**
* 把一个文件从一个目录复制到另一个目录
*
* @access public
* @param string $source 源目录
* @param string $target 目标目录
* @return boolean 成功返回true,失败返回false
*/
function copy_files($source, $target)
{
global $err, $_LANG;
if (!file_exists($target))
{
if (!mkdir(rtrim($target, '/'), 0777))
{
$err->add($_LANG['cannt_mk_dir']);
return false;
}
@chmod($target, 0777);
}
$dir = opendir($source);
while (($file = @readdir($dir)) !== false)
{
if (is_file($source . $file))
{
if (!copy($source . $file, $target . $file))
{
$err->add($_LANG['cannt_copy_file']);
return false;
}
@chmod($target . $file, 0777);
}
}
closedir($dir);
return true;
}
/**
* 其它设置
*
* @access public
* @param string $system_lang 系统语言
* @param string $disable_captcha 是否开启验证码
* @param array $goods_types 预选商品类型
* @param string $install_demo 是否安装测试数据
* @return boolean 成功返回true,失败返回false
*/
function do_others($system_lang, $captcha, $goods_types, $install_demo)
{
global $err, $_LANG;
/* 安装预选商品类型 */
if (!install_goods_types($goods_types, $system_lang))
{
$err->add(implode('', $err->last_message()));
return false;
}
/* 安装测试数据 */
if (intval($install_demo))
{
if (file_exists(ROOT_PATH . 'install/data/demo/'. $system_lang . '.sql'))
{
$sql_files = array(ROOT_PATH . 'install/data/demo/'. $system_lang . '.sql');
}
else
{
$sql_files = array(ROOT_PATH . 'install/data/demo/zh_cn.sql');
}
if (!install_data($sql_files))
{
$err->add(implode('', $err->last_message()));
return false;
}
if (!copy_files(ROOT_PATH . 'install/data/demo/200609/', ROOT_PATH . 'images/200609/'))
{
$err->add(implode('', $err->last_message()));
return false;
}
}
include(ROOT_PATH . 'data/config.php');
include_once(ROOT_PATH . 'includes/cls_mysql.php');
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
/* 更新 ECSHOP 语言 */
$sql = "UPDATE $prefix"."shop_config SET value='" . $system_lang . "' WHERE code='lang'";
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
return false;
}
/* 处理验证码 */
if (!empty($captcha))
{
$sql = "UPDATE $prefix" . "shop_config SET value = '12' WHERE code = 'captcha'";
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
return false;
}
}
return true;
}
/**
* 安装完成后的一些善后处理
*
* @access public
* @return boolean 成功返回true,失败返回false
*/
function deal_aftermath()
{
global $err, $_LANG;
include(ROOT_PATH . 'data/config.php');
include_once(ROOT_PATH . 'includes/cls_ecshop.php');
include_once(ROOT_PATH . 'includes/cls_mysql.php');
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
/* 初始化友情链接 */
$sql = "INSERT INTO $prefix"."friend_link ".
"(link_name, link_url, link_logo, show_order)".
"VALUES ".
"('".$_LANG['default_friend_link']."', 'http://www.ecshop.com/', 'http://www.ecshop.com/images/logo/ecshop_logo.gif','0')";
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
}
/* 更新 ECSHOP 安装日期 */
$sql = "UPDATE $prefix"."shop_config SET value='" .time(). "' WHERE code='install_date'";
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
}
/* 更新 ECSHOP 版本 */
$sql = "UPDATE $prefix"."shop_config SET value='" .VERSION. "' WHERE code='ecs_version'";
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
return false;
}
/* 写入 hash_code,做为网站唯一性密钥 */
$hash_code = md5(md5(time()) . md5($db->dbhash) . md5(time()));
$sql = "UPDATE $prefix"."shop_config SET value = '$hash_code' WHERE code = 'hash_code' AND value = ''";
if (!$db->query($sql, 'SILENT'))
{
$err->add($db->errno() .' '. $db->error());
return false;
}
/* 写入安装锁定文件 */
$fp = @fopen(ROOT_PATH . 'data/install.lock', 'wb+');
if (!$fp)
{
$err->add($_LANG['open_installlock_failed']);
return false;
}
if (!@fwrite($fp, "ECSHOP INSTALLED"))
{
$err->add($_LANG['write_installlock_failed']);
return false;
}
@fclose($fp);
return true;
}
/**
* 获得spt代码
*
* @access public
* @return string spt代码
*/
function get_spt_code()
{
include(ROOT_PATH . 'data/config.php');
include_once(ROOT_PATH . 'includes/cls_ecshop.php');
include_once(ROOT_PATH . 'includes/cls_mysql.php');
$db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);
$ecs = new ECS($db_name, $prefix);
$hash_code = $db->getOne("SELECT value FROM " . $ecs->table('shop_config') . " WHERE code='hash_code'");
$spt = '<script type="text/javascript" src="http://api.ecshop.com/record.php?';
$spt .= "url=" .urlencode($ecs->url()). "&mod=install&version=" .VERSION. "&hash_code=" . $hash_code . "&charset=" .EC_CHARSET. "&language=" . $GLOBALS['installer_lang'] . "\"></script>";
return $spt;
}
/**
* 取得当前的域名
*
* @access public
*
* @return string 当前的域名
*/
function get_domain()
{
/* 协议 */
$protocol = http();
/* 域名或IP地址 */
if (isset($_SERVER['HTTP_X_FORWARDED_HOST']))
{
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
elseif (isset($_SERVER['HTTP_HOST']))
{
$host = $_SERVER['HTTP_HOST'];
}
else
{
/* 端口 */
if (isset($_SERVER['SERVER_PORT']))
{
$port = ':' . $_SERVER['SERVER_PORT'];
if ((':80' == $port && 'http://' == $protocol) || (':443' == $port && 'https://' == $protocol))
{
$port = '';
}
}
else
{
$port = '';
}
if (isset($_SERVER['SERVER_NAME']))
{
$host = $_SERVER['SERVER_NAME'] . $port;
}
elseif (isset($_SERVER['SERVER_ADDR']))
{
$host = $_SERVER['SERVER_ADDR'] . $port;
}
}
return $protocol . $host;
}
/**
* 获得 ECSHOP 当前环境的 URL 地址
*
* @access public
*
* @return void
*/
function url()
{
$PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$ecserver = 'http://'.$_SERVER['HTTP_HOST'].($_SERVER['SERVER_PORT'] && $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '');
$default_appurl = $ecserver.substr($PHP_SELF, 0, strpos($PHP_SELF, 'install/') - 1);
return $default_appurl;
}
/**
* 获得 ECSHOP 当前环境的 HTTP 协议方式
*
* @access public
*
* @return void
*/
function http()
{
return (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://';
}
function insertconfig($s, $find, $replace)
{
if(preg_match($find, $s))
{
$s = preg_replace($find, $replace, $s);
}
else
{
// 插入到最后一行
$s .= "\r\n".$replace;
}
return $s;
}
function getgpc($k, $var='G')
{
switch($var)
{
case 'G': $var = &$_GET; break;
case 'P': $var = &$_POST; break;
case 'C': $var = &$_COOKIE; break;
case 'R': $var = &$_REQUEST; break;
}
return isset($var[$k]) ? $var[$k] : '';
}
function var_to_hidden($k, $v)
{
return "<input type=\"hidden\" name=\"$k\" value=\"$v\" />";
}
function dfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE, $ip = '', $timeout = 15, $block = TRUE)
{
$return = '';
$matches = parse_url($url);
$host = $matches['host'];
$path = $matches['path'] ? $matches['path'].'?'.$matches['query'].($matches['fragment'] ? '#'.$matches['fragment'] : '') : '/';
$port = !empty($matches['port']) ? $matches['port'] : 80;
if($post)
{
$out = "POST $path HTTP/1.0\r\n";
$out .= "Accept: */*\r\n";
//$out .= "Referer: $boardurl\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
$out .= "Host: $host\r\n";
$out .= 'Content-Length: '.strlen($post)."\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cache-Control: no-cache\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
$out .= $post;
}
else
{
$out = "GET $path HTTP/1.0\r\n";
$out .= "Accept: */*\r\n";
//$out .= "Referer: $boardurl\r\n";
$out .= "Accept-Language: zh-cn\r\n";
$out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n";
$out .= "Cookie: $cookie\r\n\r\n";
}
$fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
if(!$fp)
{
return '';//note $errstr : $errno \r\n
}
else
{
stream_set_blocking($fp, $block);
stream_set_timeout($fp, $timeout);
@fwrite($fp, $out);
$status = stream_get_meta_data($fp);
if(!$status['timed_out'])
{
while (!feof($fp))
{
if(($header = @fgets($fp)) && ($header == "\r\n" || $header == "\n"))
{
break;
}
}
$stop = false;
while(!feof($fp) && !$stop)
{
$data = fread($fp, ($limit == 0 || $limit > 8192 ? 8192 : $limit));
$return .= $data;
if($limit)
{
$limit -= strlen($data);
$stop = $limit <= 0;
}
}
}
@fclose($fp);
return $return;
}
}
function save_uc_config($config)
{
$success = false;
list($appauthkey, $appid, $ucdbhost, $ucdbname, $ucdbuser, $ucdbpw, $ucdbcharset, $uctablepre, $uccharset, $ucapi, $ucip) = explode('|', $config);
$content = '<?' ."php\n";
$content .= "define('UC_CONNECT', 'mysql');\n\n";
$content .= "define('UC_DBHOST', '$ucdbhost');\n\n";
$content .= "define('UC_DBUSER', '$ucdbuser');\n\n";
$content .= "define('UC_DBPW', '$ucdbpw');\n\n";
$content .= "define('UC_DBNAME', '$ucdbname');\n\n";
$content .= "define('UC_DBCHARSET', '$ucdbcharset');\n\n";
$content .= "define('UC_DBTABLEPRE', '`$ucdbname`.$uctablepre');\n\n";
$content .= "define('UC_DBCONNECT', '0');\n\n";
$content .= "define('UC_KEY', '$appauthkey');\n\n";
$content .= "define('UC_API', '$ucapi');\n\n";
$content .= "define('UC_CHARSET', '$uccharset');\n\n";
$content .= "define('UC_IP', '$ucip');\n\n";
$content .= "define('UC_APPID', '$appid');\n\n";
$content .= "define('UC_PPP', '20');\n\n";
$content .= '?>';
$fp = @fopen(ROOT_PATH . 'data/config_temp.php', 'wb+');
if (!$fp)
{
$result['error'] = 1;
//$result['message'] = $file;
$result['message'] = '请检查data目录是否可写';
//$result['message'] = $_LANG['open_config_file_failed'];
die($GLOBALS['json']->encode($result));
}
if (!@fwrite($fp, trim($content)))
{
$result['error'] = 1;
$result['message'] = '临时配置文件写入错误!';
die($GLOBALS['json']->encode($result));
}
@fclose($fp);
return true;
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -