You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

341 lines
14 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
error_reporting(0);
session_start();
@header('Content-Type: text/html; charset=UTF-8');
include '../include/version.php';
$do=isset($_GET['do'])?$_GET['do']:'0';
if(file_exists('install.lock')){
exit('您已经安装过,如需重新安装请删除<font color=red> install/install.lock </font>文件后再安装!');
}
function checkfunc($f,$m = false) {
if (function_exists($f)) {
return '<font color="green">可用</font>';
} else {
if ($m == false) {
return '<font color="black">不支持</font>';
} else {
return '<font color="red">不支持</font>';
}
}
}
function checkclass($f,$m = false) {
if (class_exists($f)) {
return '<font color="green">可用</font>';
} else {
if ($m == false) {
return '<font color="black">不支持</font>';
} else {
return '<font color="red">不支持</font>';
}
}
}
function checkconnect($connect){
if(function_exists($connect)){
echo '<font color="green">可用</font>';}
else {
echo '<font color="red">不支持</font>';
}
}
$ver = constant("VERSION");
?>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no,minimal-ui">
<title>六零导航页 - 安装程序</title>
<link href="//lib.baomitu.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
</head>
<body>
<nav class="navbar navbar-fixed-top navbar-default">
<div class="container">
<div class="navbar-header">
<span class="navbar-brand">安装向导</span>
</div>
</div>
</nav>
<div class="container" style="padding-top:60px;">
<div class="col-xs-12 col-sm-8 col-lg-6 center-block" style="float: none;">
<?php if($do=='0'){
$_SESSION['checksession']=1;
?>
<div class="panel panel-primary">
<div class="panel-heading" style="background: #15A638;">
<h3 class="panel-title" align="center">用户使用协议阅读</h3>
</div>
<div class="panel-body">
<p><iframe src="readme.html" style="width:100%;height:465px;"></iframe></p>
<p align="center"><a id="agreebtn" class="btn btn-primary" href="index.php?do=1">同意协议并开始安装</a></p>
</div>
</div>
<?php }elseif($do=='1'){?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">环境检查</h3>
</div>
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 10%">
<span class="sr-only">10%</span>
</div>
</div>
<table class="table table-striped">
<thead>
<tr>
<th style="width:20%">函数检测</th>
<th style="width:15%">需求</th>
<th style="width:15%">当前</th>
<th style="width:50%">用途</th>
</tr>
</thead>
<tbody>
<tr>
<td>PHP 5.4及以上</td>
<td>必须</td>
<td><?php echo version_compare(PHP_VERSION, '5.4.0', '>')?'<font color="green">'.PHP_VERSION.'</font>':'<font color="red">'.PHP_VERSION.'</font>'; ?></td>
<td>PHP版本支持</td>
</tr>
<tr>
<td>PDO</td>
<td>必须</td>
<td><?php echo checkclass('PDO',true); ?></td>
<td>数据库连接</td>
</tr>
<tr>
<td>file_get_contents()</td>
<td>必须</td>
<td><?php echo checkfunc('file_get_contents',true); ?></td>
<td>读取文件</td>
</tr>
<tr>
<td>session</td>
<td>必须</td>
<td><?php echo $_SESSION['checksession']==1?'<font color="green">可用</font>':'<font color="red">不支持</font>'; ?></td>
<td>PHP必备功能</td>
</tr>
</tbody>
</table>
<p><span><a class="btn btn-primary" href="index.php?do=0"><<上一步</a></span>
<span style="float:right"><a class="btn btn-primary" href="index.php?do=2" align="right">下一步>></a></span></p>
</div>
<?php }elseif($do=='2'){?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">数据库配置</h3>
</div>
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 30%">
<span class="sr-only">30%</span>
</div>
</div>
<div class="panel-body">
<?php
if(!defined("SAE_ACCESSKEY"))
echo <<<HTML
<form action="?do=3" class="form-sign" method="post">
<label for="name">数据库地址:</label>
<input type="text" class="form-control" name="db_host" value="localhost">
<label for="name">数据库端口:</label>
<input type="text" class="form-control" name="db_port" value="3306">
<label for="name">数据库用户名:</label>
<input type="text" class="form-control" name="db_user">
<label for="name">数据库密码:</label>
<input type="text" class="form-control" name="db_pwd">
<label for="name">数据库名:</label>
<input type="text" class="form-control" name="db_name">
<br><input type="submit" class="btn btn-primary btn-block" name="submit" value="保存配置">
</form><br/>
如果已事先填写好config.php相关数据库配置请 <a href="?do=3&jump=1">点击此处</a> 跳过这一步!)
HTML;
?>
</div>
</div>
<?php }elseif($do=='3'){
?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">保存数据库</h3>
</div>
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 50%">
<span class="sr-only">50%</span>
</div>
</div>
<div class="panel-body">
<?php
if(defined("SAE_ACCESSKEY") || $_GET['jump']==1){
include_once '../config.php';
if(!$dbconfig['user']||!$dbconfig['pwd']||!$dbconfig['dbname']) {
echo '<div class="alert alert-danger">请先填写好数据库并保存后再安装!<hr/><a href="javascript:history.back(-1)"><< 返回上一页</a></div>';
} else {
if(!$con=mysqli_connect($dbconfig['host'],$dbconfig['user'],$dbconfig['pwd'],$dbconfig['dbname'],$dbconfig['port'])){
if(mysqli_connect_errno()==2002)
echo '<div class="alert alert-warning">连接数据库失败,数据库地址填写错误!</div>';
elseif(mysqli_connect_errno()==1045)
echo '<div class="alert alert-warning">连接数据库失败,数据库用户名或密码填写错误!</div>';
elseif(mysqli_connect_errno()==1049)
echo '<div class="alert alert-warning">连接数据库失败,数据库名不存在!</div>';
else
echo '<div class="alert alert-warning">连接数据库失败,['.mysqli_connect_errno().']'.mysqli_connect_error().'</div>';
}elseif(version_compare(mysqli_get_server_info($con), '5.5.3', '<')){
echo '<div class="alert alert-warning">MySQL数据库版本太低需要MySQL 5.6或以上版本!</div>';
}else{
echo '<div class="alert alert-success">数据库配置文件保存成功!</div>';
if(mysqli_query($con, "select * from lylme_config where 1")==FALSE)
echo '<p align="right"><a class="btn btn-primary btn-block" href="?do=4">创建数据表>></a></p>';
else
echo '<div class="list-group-item list-group-item-info">系统检测到你已安装过六零导航页</div>
<div class="list-group-item">
<a href="?do=6" class="btn btn-block btn-info">跳过安装</a>
</div>
<div class="list-group-item">
<a href="?do=4" onclick="if(!confirm(\'全新安装将会清空所有数据,是否继续?\')){return false;}" class="btn btn-block btn-warning">强制全新安装</a>
</div>';
}
}
}else{
$db_host=isset($_POST['db_host'])?$_POST['db_host']:NULL;
$db_port=isset($_POST['db_port'])?$_POST['db_port']:NULL;
$db_user=isset($_POST['db_user'])?$_POST['db_user']:NULL;
$db_pwd=isset($_POST['db_pwd'])?$_POST['db_pwd']:NULL;
$db_name=isset($_POST['db_name'])?$_POST['db_name']:NULL;
if($db_host==null || $db_port==null || $db_user==null || $db_pwd==null || $db_name==null){
echo '<div class="alert alert-danger">保存错误,请确保每项都不为空<hr/><a href="javascript:history.back(-1)"><< 返回上一页</a></div>';
} else {
$config='<?php
/*数据库配置*/
$dbconfig=array(
"host" => "'.$db_host.'", //数据库服务器
"port" => '.$db_port.', //数据库端口
"user" => "'.$db_user.'", //数据库用户名
"pwd" => "'.$db_pwd.'", //数据库密码
"dbname" => "'.$db_name.'", //数据库名
);
?>';
if(!$con=mysqli_connect($db_host,$db_user,$db_pwd,$db_name,$db_port)){
if(mysqli_connect_errno()==2002)
echo '<div class="alert alert-warning">连接数据库失败,数据库地址填写错误!</div>';
elseif(mysqli_connect_errno()==1045)
echo '<div class="alert alert-warning">连接数据库失败,数据库用户名或密码填写错误!</div>';
elseif(mysqli_connect_errno()==1044)
echo '<div class="alert alert-warning">连接数据库失败,数据库名填写错误!</div>';
elseif(mysqli_connect_errno()==1049)
echo '<div class="alert alert-warning">连接数据库失败,数据库名不存在!</div>';
else
echo '<div class="alert alert-warning">连接数据库失败,['.mysqli_connect_errno().']'.mysqli_connect_error().'</div>';
}elseif(version_compare(mysqli_get_server_info($con), '5.5.3', '<')){
echo '<div class="alert alert-warning">MySQL数据库版本太低需要MySQL 5.6或以上版本!</div>';
}elseif(file_put_contents('../config.php',$config)){
if(function_exists("opcache_reset"))@opcache_reset();
echo '<div class="alert alert-success">数据库配置文件保存成功!</div>';
if(mysqli_query($con, "select * from lylme_config where 1")==FALSE)
echo '<p align="right"><a class="btn btn-primary btn-block" href="?do=4">创建数据表>></a></p>';
else
echo '<div class="list-group-item list-group-item-info">系统检测到你已安装过六零导航页</div>
<div class="list-group-item">
<a href="?do=6" class="btn btn-block btn-info">跳过安装</a>
</div>
<div class="list-group-item">
<a href="?do=4" onclick="if(!confirm(\'全新安装将会清空所有数据,是否继续?\')){return false;}" class="btn btn-block btn-warning">强制全新安装</a>
</div>';
}else
echo '<div class="alert alert-danger">保存失败,请确保网站根目录有写入权限<hr/><a href="javascript:history.back(-1)"><< 返回上一页</a></div>';
}
}
?>
</div>
</div>
<?php }elseif($do=='4'){?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">创建数据表</h3>
</div>
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 70%">
<span class="sr-only">70%</span>
</div>
</div>
<div class="panel-body">
<?php
include_once '../config.php';
if(!$dbconfig['user']||!$dbconfig['pwd']||!$dbconfig['dbname']) {
echo '<div class="alert alert-danger">请先填写好数据库并保存后再安装!<hr/><a href="javascript:history.back(-1)"><< 返回上一页</a></div>';
} else {
date_default_timezone_set("PRC");
$date = date("Y-m-d");
$sql=file_get_contents("install.sql");
$sql=explode(';',$sql);
$sql[] = "INSERT INTO `lylme_config` VALUES ('build', '".$date."', '建站日期')";
$cn = mysqli_connect($dbconfig['host'],$dbconfig['user'],$dbconfig['pwd'],$dbconfig['dbname'],$dbconfig['port']);
if (!$cn) die('链接数据库失败:['.mysqli_connect_errno().']'.mysqli_connect_error());
mysqli_query($cn, "set sql_mode = ''");
mysqli_query($cn, "set names utf8");
$t=0; $e=0; $error='';
for($i=0;$i<count($sql);$i++) {
if (trim($sql[$i])=='')continue;
if(mysqli_query($cn, $sql[$i])) {
++$t;
} else {
++$e;
$error.=mysqli_error($cn).'<br/>';
}
}
}
if($e==0) {
echo '<div class="alert alert-success">安装成功!<br/>SQL成功'.$t.'句/失败'.$e.'句</div><p align="right"><a class="btn btn-block btn-primary" href="index.php?do=5">下一步>></a></p>';
} else {
echo '<div class="alert alert-danger">安装失败<br/>SQL成功'.$t.'句/失败'.$e.'句<br/>错误信息:'.$error.'</div><p align="right"><a class="btn btn-block btn-primary" href="index.php?do=4">点此进行重试</a></p>';
}
?>
</div>
</div>
<?php }elseif($do=='5'){ ?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">安装完成</h3>
</div>
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100%</span>
</div>
</div>
<div class="panel-body">
<?php
$domian=array('lylme','https',$ver);
@file_get_contents($domian[1].'://dev.hao.'.$domian[0].'.com/installs?v='.$domian[2].'&date='.date('Y-m-d H:i').'&url='.$_SERVER['HTTP_HOST'], false, stream_context_create(array('http'=>array('method'=>"GET",'timeout'=>10))));
@file_put_contents("install.lock",'安装锁');
echo '<div class="alert alert-info"><font color="green">安装完成!管理账号和密码是:admin/123456</font><br/><br/><a href="../" target="_blank">>>网站首页</a><a href="../admin/" target="_blank">>>后台管理</a><hr/>更多设置选项请登录后台管理进行修改。<br/><br/><font color="#FF0033">如果你的空间不支持本地文件读写请自行在install/ 目录建立 install.lock 文件!</font></div></div>';
?>
</div>
</div>
<?php }elseif($do=='6'){ ?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">安装完成</h3>
</div>
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
<span class="sr-only">100%</span>
</div>
</div>
<div class="panel-body">
<?php
@file_put_contents("install.lock",'安装锁');
echo '<div class="alert alert-info"><font color="green">安装完成!管理账号和密码是:admin/123456</font><br/><br/><a href="../" target="_blank">>>网站首页</a><a href="../admin/" target="_blank">>>后台管理</a><hr/>更多设置选项请登录后台管理进行修改。<br/><br/><font color="#FF0033">如果你的空间不支持本地文件读写请自行在install/ 目录建立 install.lock 文件!</font></div>';
?>
</div>
</div>
<?php }?>
</div>
</body>
</html>