mirror of https://github.com/helloxz/imgurl.git
xiaoz
6 years ago
9 changed files with 343 additions and 5 deletions
@ -1,14 +1,14 @@ |
|||||||
<?php |
<?php |
||||||
//项目绝对路径 |
//项目绝对路径 |
||||||
define("APP","D:/wwwroot/imgurl/"); |
define("APP","homedir"); |
||||||
|
|
||||||
//载入数据库类 |
//载入数据库类 |
||||||
include_once(APP."functions/class/Medoo.php"); |
include_once(APP."functions/class/Medoo.php"); |
||||||
|
|
||||||
$config = array( |
$config = array( |
||||||
"domain" => "http://localhost/imgurl/", //站点地址 |
"domain" => "https://imgurl.org/", //站点地址 |
||||||
"user" => "xiaoz", //管理员账号 |
"user" => "imguser", //管理员账号 |
||||||
"password" => "xiaoz.me", //管理员密码 |
"password" => "imgpass", //管理员密码 |
||||||
"limit" => 5, //游客上传数量限制 |
"limit" => 5, //游客上传数量限制 |
||||||
"watermark" => "imgurl.org", //图片文字水印 |
"watermark" => "imgurl.org", //图片文字水印 |
||||||
"userdir" => "temp", //游客上传目录,一般不用做修改 |
"userdir" => "temp", //游客上传目录,一般不用做修改 |
@ -0,0 +1,173 @@ |
|||||||
|
<?php |
||||||
|
class Install{ |
||||||
|
public $homedir; |
||||||
|
public $domain; |
||||||
|
//构造函数 |
||||||
|
public function __construct(){ |
||||||
|
//获取项目绝对路径 |
||||||
|
$thedir = __DIR__; |
||||||
|
$homedir = str_replace("\\","/",$thedir); |
||||||
|
$homedir = str_replace("functions/class","",$homedir); |
||||||
|
$this->homedir = $homedir; |
||||||
|
|
||||||
|
//获取当前域名 |
||||||
|
//获取当前端口 |
||||||
|
$port = $_SERVER["SERVER_PORT"]; |
||||||
|
//对端口进行判断 |
||||||
|
switch ( $port ) |
||||||
|
{ |
||||||
|
case 80: |
||||||
|
$protocol = "http://"; |
||||||
|
$port = ''; |
||||||
|
break; |
||||||
|
case 443: |
||||||
|
$protocol = "https://"; |
||||||
|
$port = ''; |
||||||
|
break; |
||||||
|
default: |
||||||
|
$protocol = "http://"; |
||||||
|
$port = ":".$port; |
||||||
|
break; |
||||||
|
} |
||||||
|
$uri = $_SERVER["REQUEST_URI"]; |
||||||
|
$uri = str_replace("check.php","",$uri); |
||||||
|
//组合为完整的URL |
||||||
|
$domain = $protocol.$_SERVER['SERVER_NAME'].$port.$uri; |
||||||
|
$domain = str_replace("install.php?setup=2","",$domain); |
||||||
|
$this->domain = $domain; |
||||||
|
} |
||||||
|
//检查环境是否符合条件 |
||||||
|
public function check(){ |
||||||
|
$homedir = $this->homedir; |
||||||
|
|
||||||
|
//echo $homedir.'db'; |
||||||
|
//检查根目录是否可写,结果写入到一个数组 |
||||||
|
//echo $thedir; |
||||||
|
$checkarr['home'] = is_writable($homedir); |
||||||
|
if($checkarr['home']){ |
||||||
|
$statusarr['home'] = '通过'; |
||||||
|
|
||||||
|
} |
||||||
|
else{ |
||||||
|
$statusarr['home'] = '<span style = "color:red;">目录不可写!</span>'; |
||||||
|
|
||||||
|
} |
||||||
|
$checkarr['db'] = is_writable($homedir.'db'); |
||||||
|
if($checkarr['db']){ |
||||||
|
$statusarr['db'] = '通过'; |
||||||
|
} |
||||||
|
else{ |
||||||
|
$statusarr['db'] = '<span style = "color:red;">目录不可写!</span>'; |
||||||
|
|
||||||
|
} |
||||||
|
//检测组建是否支持 |
||||||
|
$ext = get_loaded_extensions(); |
||||||
|
if(array_search('pdo_sqlite',$ext)){ |
||||||
|
$statusarr['pdo'] = '支持'; |
||||||
|
} |
||||||
|
else{ |
||||||
|
$statusarr['pdo'] = '<span style = "color:red;">不支持!</span>'; |
||||||
|
} |
||||||
|
//return $checkarr; |
||||||
|
return $statusarr; |
||||||
|
} |
||||||
|
//获取站点信息 |
||||||
|
public function info(){ |
||||||
|
$homedir = $this->homedir; |
||||||
|
|
||||||
|
$info = array( |
||||||
|
"homedir" => $this->homedir, |
||||||
|
"domain" => $this->domain |
||||||
|
); |
||||||
|
|
||||||
|
return $info; |
||||||
|
} |
||||||
|
//验证函数 |
||||||
|
protected function verify($data,$type){ |
||||||
|
switch ($type) { |
||||||
|
//检查用户名 |
||||||
|
case 'user': |
||||||
|
$pattern = '/^[a-zA-Z0-9]+$/'; |
||||||
|
if($data == ''){ |
||||||
|
echo '请填写用户名!'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
if(!preg_match($pattern,$data)){ |
||||||
|
echo '用户名格式有误!'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
break; |
||||||
|
case 'pass': |
||||||
|
$pattern = '/^[a-zA-Z0-9!@#$%^&*.]+$/'; |
||||||
|
if(!preg_match($pattern,$data)){ |
||||||
|
echo '密码格式有误!'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
break; |
||||||
|
case 'pass2': |
||||||
|
$pass1 = $data['pass1']; |
||||||
|
$pass2 = $data['pass2']; |
||||||
|
|
||||||
|
if($pass1 != $pass2){ |
||||||
|
echo '两次密码不一致!'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
break; |
||||||
|
case 'domain': |
||||||
|
$domain = $data['domain']; |
||||||
|
if(!filter_var($domain, FILTER_VALIDATE_URL)){ |
||||||
|
echo '域名格式有误!(需要包含https://)'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
break; |
||||||
|
default: |
||||||
|
# code... |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
//安装 |
||||||
|
public function setup($data){ |
||||||
|
$homedir = $this->homedir; |
||||||
|
$dbpath = $this->homedir.'db/'; |
||||||
|
$user = $data['user']; |
||||||
|
$pass1 = $data['pass1']; |
||||||
|
$pass2 = $data['pass2']; |
||||||
|
|
||||||
|
|
||||||
|
$this->verify($user,'user'); |
||||||
|
$this->verify($pass1,'pass'); |
||||||
|
$this->verify($data,'pass2'); |
||||||
|
$this->verify($data,'domain'); |
||||||
|
|
||||||
|
//复制一份数据库 |
||||||
|
copy($dbpath."imgurl-simple.db3",$dbpath."imgurl.db3"); |
||||||
|
//复制一份配置文件 |
||||||
|
if(copy($homedir."config-simple.php",$homedir."config.php")){ |
||||||
|
$configdir = $homedir."config.php"; |
||||||
|
|
||||||
|
$myfile = fopen($homedir."config.php", "r") or die("Unable to open file!"); |
||||||
|
|
||||||
|
|
||||||
|
$content = fread($myfile,filesize($configdir)); |
||||||
|
//执行替换 |
||||||
|
$content = str_replace("imguser",$user,$content); |
||||||
|
$content = str_replace("imgpass",$pass2,$content); |
||||||
|
$content = str_replace("homedir",$data['homedir'],$content); |
||||||
|
$content = str_replace("https://imgurl.org/",$data['domain'],$content); |
||||||
|
|
||||||
|
//var_dump($content); |
||||||
|
|
||||||
|
//写入文件 |
||||||
|
$myfile = fopen($homedir."config.php", "w+") or die("Unable to open file!"); |
||||||
|
|
||||||
|
|
||||||
|
fwrite($myfile, $content); |
||||||
|
//关闭 |
||||||
|
fclose($myfile); |
||||||
|
//更名安装文件 |
||||||
|
rename($homedir."install.php",$homedir."install.php.bak"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
?> |
@ -0,0 +1,41 @@ |
|||||||
|
<?php |
||||||
|
//载入类 |
||||||
|
//echo __DIR__."/functions/class/class.install.php"; |
||||||
|
include_once(__DIR__."/functions/class/class.install.php"); |
||||||
|
@$setup = (int)$_GET['setup']; |
||||||
|
|
||||||
|
$install = new Install; |
||||||
|
$statusarr = $install->check(); |
||||||
|
|
||||||
|
$info = $install->info(); |
||||||
|
|
||||||
|
switch ($setup) { |
||||||
|
case 1: |
||||||
|
//载入模板 |
||||||
|
include_once("./tpl/user/header.php"); |
||||||
|
include_once("./tpl/user/install1.php"); |
||||||
|
include_once("./tpl/user/footer.php"); |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
include_once("./tpl/user/header.php"); |
||||||
|
include_once("./tpl/user/install2.php"); |
||||||
|
include_once("./tpl/user/footer.php"); |
||||||
|
break; |
||||||
|
case 3: |
||||||
|
//获取用户名 |
||||||
|
@$data['user'] = $_POST['user']; |
||||||
|
//获取用户密码 |
||||||
|
@$data['pass1'] = $_POST['pass1']; |
||||||
|
@$data['pass2'] = $_POST['pass2']; |
||||||
|
@$data['domain'] = $_POST['domain']; |
||||||
|
@$data['homedir'] = $_POST['homedir']; |
||||||
|
$install->setup($data); |
||||||
|
include_once("./tpl/user/header.php"); |
||||||
|
include_once("./tpl/user/install3.php"); |
||||||
|
include_once("./tpl/user/footer.php"); |
||||||
|
break; |
||||||
|
default: |
||||||
|
header("location:./install.php?setup=1"); |
||||||
|
break; |
||||||
|
} |
||||||
|
?> |
@ -0,0 +1,45 @@ |
|||||||
|
<div class="layui-container"> |
||||||
|
<div class="layui-row" style = "margin-top:2em;"> |
||||||
|
<div class="layui-col-lg8 layui-col-md-offset2"> |
||||||
|
<center style = "margin-bottom:2em;"><h1>ImgURL安装向导(1/3)</h1></center> |
||||||
|
<!-- 检测结果表格 --> |
||||||
|
<table class="layui-table"> |
||||||
|
<colgroup> |
||||||
|
<col width="220"> |
||||||
|
<col width="220"> |
||||||
|
<col> |
||||||
|
</colgroup> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th>目录</th> |
||||||
|
<th>要求</th> |
||||||
|
<th>检测结果</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
<tr> |
||||||
|
<td>/</td> |
||||||
|
<td>读/写</td> |
||||||
|
<td><?php echo $statusarr['home']; ?></td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>/db</td> |
||||||
|
<td>读/写</td> |
||||||
|
<td><?php echo $statusarr['db']; ?></td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>组建</td> |
||||||
|
<td>pdo_sqlite </td> |
||||||
|
<td><?php echo $statusarr['pdo']; ?></td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
<!-- 检测结果表格EDN --> |
||||||
|
<!-- 下一步按钮 --> |
||||||
|
<div> |
||||||
|
<a href="./install.php?setup=2" class="layui-btn">下一步</a> |
||||||
|
</div> |
||||||
|
<!-- 下一步按钮END --> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
@ -0,0 +1,51 @@ |
|||||||
|
<div class="layui-container"> |
||||||
|
<div class="layui-row" style = "margin-top:2em;"> |
||||||
|
<div class="layui-col-lg8 layui-col-md-offset2"> |
||||||
|
<center style = "margin-bottom:2em;"><h1>ImgURL安装向导(2/3)</h1></center> |
||||||
|
<!-- 表单 --> |
||||||
|
<form class="layui-form" action="./install.php?setup=3" method = "post"> |
||||||
|
<div class="layui-form-item"> |
||||||
|
<label class="layui-form-label">站点路径</label> |
||||||
|
<div class="layui-input-block"> |
||||||
|
<input type="text" name="homedir" required lay-verify="required" placeholder="一般保持默认" autocomplete="off" class="layui-input" value = <?php echo $info['homedir']; ?>> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="layui-form-item"> |
||||||
|
<label class="layui-form-label">站点域名</label> |
||||||
|
<div class="layui-input-block"> |
||||||
|
<input type="text" name="domain" required lay-verify="required" placeholder="一般保持默认" autocomplete="off" class="layui-input" value = <?php echo $info['domain']; ?>> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="layui-form-item"> |
||||||
|
<label class="layui-form-label">用户名</label> |
||||||
|
<div class="layui-input-block"> |
||||||
|
<input type="text" name="user" required lay-verify="required" placeholder="字母或数字组合" autocomplete="off" class="layui-input"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="layui-form-item"> |
||||||
|
<label class="layui-form-label">密码</label> |
||||||
|
<div class="layui-input-block"> |
||||||
|
<input type="password" name="pass1" required lay-verify="required" placeholder="设置密码" autocomplete="off" class="layui-input"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="layui-form-item"> |
||||||
|
<label class="layui-form-label">确认密码</label> |
||||||
|
<div class="layui-input-block"> |
||||||
|
<input type="password" name="pass2" required lay-verify="required" placeholder="再次确认密码" autocomplete="off" class="layui-input"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="layui-form-item"> |
||||||
|
<div class="layui-input-block"> |
||||||
|
<a href="./install.php?setup=1" class="layui-btn">上一步</a> |
||||||
|
<button class="layui-btn" lay-submit lay-filter="formDemo">开始安装</button> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
<!-- 表单EDN --> |
||||||
|
<!-- 下一步按钮 --> |
||||||
|
|
||||||
|
<!-- 下一步按钮END --> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
@ -0,0 +1,17 @@ |
|||||||
|
<div class="layui-container"> |
||||||
|
<div class="layui-row" style = "margin-top:2em;"> |
||||||
|
<div class="layui-col-lg8 layui-col-md-offset2"> |
||||||
|
<center style = "margin-bottom:2em;"><h1>安装完成!(3/3)</h1></center> |
||||||
|
<!-- 安装完成 --> |
||||||
|
<div style = "text-align:center;"> |
||||||
|
<div class="layui-btn-group"> |
||||||
|
<a href="./" class="layui-btn">返回首页</a> |
||||||
|
<a href="./admin/login.php" class="layui-btn">登录后台</a> |
||||||
|
<a class="layui-btn" href="https://doc.xiaoz.me/#/imgurl/">查看帮助文档</a> |
||||||
|
<a class="layui-btn" href="https://dwz.ovh/imgurl" rel = "nofollow" target = "_blank">打赏支持</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!-- 安装完成END --> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
Loading…
Reference in new issue