mirror of https://github.com/helloxz/imgurl.git
xiaoz
7 years ago
14 changed files with 492 additions and 12 deletions
@ -1,2 +1,24 @@ |
|||||||
# imgurl |
# ImgURL |
||||||
继XZ Pic后,xiaoz的又一款图床程序。 |
ImgURL是一个简单、纯粹的图床程序,使用PHP脚本开发,不需要数据库支持,也没有复杂的配置。 |
||||||
|
|
||||||
|
### 环境要求 |
||||||
|
* PHP >= 5.6 |
||||||
|
* 需要exif函数支持 |
||||||
|
|
||||||
|
### 开发计划 |
||||||
|
- [x] 图片上传与预览 |
||||||
|
- [x] 一键生成链接 |
||||||
|
- [x] 浏览与删除图片 |
||||||
|
- [ ] 图片压缩 |
||||||
|
- [ ] 多图上传 |
||||||
|
- [ ] 图片鉴黄 |
||||||
|
|
||||||
|
### 安装 |
||||||
|
<p>访问:<a href="https://github.com/helloxz/imgurl/archive/master.zip" target = "_blank" rel = "nofollow">master.zip</a>下载最新版ImgURL程序,放到您的站点根目录并解压。修改一下<code>config.php</code>设置你自己的域名和密码,访问<code>http(s)://domain.com/</code>即可,就是这么简单。</p> |
||||||
|
|
||||||
|
### 部分截图 |
||||||
|
![](https://i.bk.tn/uploads/1712/230615302734.png) |
||||||
|
|
||||||
|
### 联系我 |
||||||
|
* Blog:<a href = "https://www.xiaoz.me/" target = "_blank">https://www.xiaoz.me/</a> |
||||||
|
* <li>QQ:337003006</li> |
||||||
|
@ -0,0 +1,26 @@ |
|||||||
|
<?php |
||||||
|
include_once('header.php'); |
||||||
|
?> |
||||||
|
<div class="container" style = "margin-top:40px;"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-10 col-md-offset-1"> |
||||||
|
<h1>ImgURL</h1> |
||||||
|
<p>ImgURL是一个干尽、纯粹的图床程序,使用PHP脚本开发,不需要数据库支持,也没有复杂的配置。</p> |
||||||
|
<p>没有免费的午餐,也没用永久免费的图床,ImgURL无法保障永久存储您的图片,但ImgURL让图床多了一个选择,只有图片掌握在自己手中才更安全。</p> |
||||||
|
<h3>安装</h3> |
||||||
|
<p>访问:<a href="https://github.com/helloxz/imgurl/archive/master.zip" target = "_blank" rel = "nofollow">master.zip</a>下载最新版ImgURL程序,放到您的站点根目录并解压。修改一下<code>config.php</code>设置你自己的域名和密码,访问<code>http(s)://domain.com/</code>即可,就是这么简单。</p> |
||||||
|
<h3>说明</h3> |
||||||
|
<p><code>imgurl.org</code>也可以上传图片,但ImgURL的目的是提供私人图床程序,<code>imgurl.org</code>仅作为演示使用,游客上传的图片随时可能被删除,因此推荐您下载ImgURL自行部署。</p> |
||||||
|
<p>ImgURL是一个开源免费的个人项目,请勿将ImgURL用于商业用途,未经授权也不要去除底部版权。</p> |
||||||
|
<p><b>项目地址:</b><a href = "https://github.com/helloxz/imgurl" target = "_blank" rel = "nofollow">https://github.com/helloxz/imgurl</a></p> |
||||||
|
<h3>联系我</h3> |
||||||
|
<ul> |
||||||
|
<li>Blog:<a href = "https://www.xiaoz.me/" target = "_blank">https://www.xiaoz.me/</a></li> |
||||||
|
<li>QQ:337003006</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<?php |
||||||
|
include_once('footer.php'); |
||||||
|
?> |
@ -1,6 +1,11 @@ |
|||||||
<?php |
<?php |
||||||
$config = array( |
$config = array( |
||||||
'domain' => 'http://localhost/imgurl/', |
'domain' => 'http://localhost/imgurl/', //网站域名 |
||||||
'watermark' => 'false' |
'watermark' => 'false', //文字水印 |
||||||
|
'userdir' => 'temp', //访客上传目录,一般保持默认 |
||||||
|
'admindir' => 'upload', //管理员上传目录,一般保持默认 |
||||||
|
'username' => 'xiaoz', //管理员账号 |
||||||
|
'password' => 'xiaoz.me', //管理员密码 |
||||||
|
'tinypng' => '' //使用TinyPNG压缩图片 |
||||||
); |
); |
||||||
?> |
?> |
@ -0,0 +1,116 @@ |
|||||||
|
<?php |
||||||
|
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED); |
||||||
|
//载入配置 |
||||||
|
include_once('./config.php'); |
||||||
|
//载入header |
||||||
|
include_once('./header.php'); |
||||||
|
$current_time = date('ym',time()); //当前月份 |
||||||
|
|
||||||
|
$time = $_GET['time']; |
||||||
|
$mydir = $_GET['dir']; |
||||||
|
|
||||||
|
//时间不存在,用当前时间 |
||||||
|
if(!isset($time)) { |
||||||
|
$time = $current_time; |
||||||
|
} |
||||||
|
//目录不存在,使用普通用户目录 |
||||||
|
if(!isset($mydir)) { |
||||||
|
$mydir = $config['userdir']; |
||||||
|
} |
||||||
|
//目录存在,但是既不是用户目录也不是管理员目录 |
||||||
|
if(($mydir != $config['userdir']) && ($mydir != $config['admindir'])) { |
||||||
|
$mydir = $config['userdir']; |
||||||
|
} |
||||||
|
//目录存在,并且是管理员目录 |
||||||
|
if($mydir == $config['admindir']) { |
||||||
|
$mydir = $config['admindir']; |
||||||
|
} |
||||||
|
?> |
||||||
|
<div class="container" style = "margin-top:40px;"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-10 col-md-offset-1"> |
||||||
|
<!--图片预览--> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<img id = "viewid" src="./static/view.jpg" class="img-thumbnail img-responsive"> |
||||||
|
</div> |
||||||
|
<!--图片预览END--> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<table class="table table-striped"> |
||||||
|
<tbody> |
||||||
|
<?php |
||||||
|
function get_files($dir) { |
||||||
|
$files = array(); |
||||||
|
|
||||||
|
for (; $dir->valid(); $dir->next()) { |
||||||
|
if ($dir->isDir() && !$dir->isDot()) { |
||||||
|
if ($dir->haschildren()) { |
||||||
|
$files = array_merge($files, get_files($dir->getChildren())); |
||||||
|
}; |
||||||
|
}else if($dir->isFile()){ |
||||||
|
$files[] = $dir->getPathName(); |
||||||
|
} |
||||||
|
} |
||||||
|
return $files; |
||||||
|
} |
||||||
|
|
||||||
|
$path = $mydir.'/'.$time; |
||||||
|
$dir = new RecursiveDirectoryIterator($path); |
||||||
|
$fname = get_files($dir); |
||||||
|
$num = count($fname) - 1; |
||||||
|
|
||||||
|
for($i = 0;$i <= $num;$i++) { |
||||||
|
$fname[$i] = str_replace("\\","/",$fname[$i]); |
||||||
|
//如果文件是空的,则终止循环 |
||||||
|
?> |
||||||
|
<tr id = "row<?php echo $i; ?>"> |
||||||
|
<td onmouseover = "return view('<?php echo $config['domain'].$fname[$i] ?>');"> |
||||||
|
<?php |
||||||
|
echo "<a href = "."'".$config['domain'].$fname[$i]."' target = '_blank'>"."$fname[$i]</a>"; |
||||||
|
?> |
||||||
|
</td> |
||||||
|
<td> |
||||||
|
<?php |
||||||
|
if(isset($_COOKIE['uid'])) { |
||||||
|
echo "<a href = \"javascript:;\" onclick = \"del('$fname[$i]',$i);\">删除</a>"; |
||||||
|
} |
||||||
|
?> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
<?php } ?> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<script> |
||||||
|
function view(imgurl) { |
||||||
|
$("#viewid").src; |
||||||
|
$("#viewid").attr('src',imgurl); |
||||||
|
} |
||||||
|
//删除图片 |
||||||
|
function del(filedir,rowid) { |
||||||
|
//行id |
||||||
|
var rowid = 'row' + rowid; |
||||||
|
//确认删除? |
||||||
|
var msg = "确认删除?"; |
||||||
|
if (confirm(msg)==true){ |
||||||
|
$.get("./functions.php?type=delete&dir="+filedir,function(data,status){ |
||||||
|
//删除成功 |
||||||
|
if(data == 'ok') { |
||||||
|
$("#"+rowid).remove(); |
||||||
|
} |
||||||
|
else{ |
||||||
|
alert(data); //删除失败,弹出报错 |
||||||
|
} |
||||||
|
}); |
||||||
|
}else{ |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<?php |
||||||
|
//载入页脚 |
||||||
|
include_once('./footer.php'); |
||||||
|
?> |
@ -0,0 +1,12 @@ |
|||||||
|
|
||||||
|
<!--页脚--> |
||||||
|
<div id = "footer"> |
||||||
|
<div class="container"> |
||||||
|
<div class="row"> |
||||||
|
<!--这是一个开源免费的作品,请为她保留版权--> |
||||||
|
<div class="col-lg-10 col-md-offset-1">Copyright Ⓒ 2017 Powered by <a href="https://github.com/helloxz/imgurl" title = "ImgURL" target = "_blank" rel = "nofollow">ImgURL</a>. Author: <a href="https://www.xiaoz.me/" title = "小z博客" target = "_blank">xiaoz.me</a>. 请勿上传违反中国大陆法律的图片,违者后果自负。</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,76 @@ |
|||||||
|
<?php |
||||||
|
error_reporting(E_ALL^E_NOTICE^E_WARNING^E_DEPRECATED); |
||||||
|
include_once('./config.php'); |
||||||
|
|
||||||
|
$type = $_GET['type']; //获取方法类型 |
||||||
|
|
||||||
|
$user = $_POST['user']; //用户名 |
||||||
|
$pass = $_POST['pass']; //密码 |
||||||
|
$imgname = $_GET['dir']; //获取图片路径 |
||||||
|
|
||||||
|
//用户ID |
||||||
|
$userid = md5($config['username'].$config['password']); |
||||||
|
//登录ID |
||||||
|
$loginid = md5($user.$pass); |
||||||
|
|
||||||
|
//方法判断 |
||||||
|
switch($type) { |
||||||
|
case 'login': |
||||||
|
login($userid,$loginid); |
||||||
|
break; |
||||||
|
case 'logout': |
||||||
|
logout(); |
||||||
|
case 'delete': |
||||||
|
$uid = $_COOKIE['uid']; |
||||||
|
$loginid = md5($config['username'].$config['password']); |
||||||
|
if($loginid == $uid) { |
||||||
|
delete($imgname,$config['userdir'],$config['admindir']); |
||||||
|
} |
||||||
|
else{ |
||||||
|
echo '请先登录'; |
||||||
|
} |
||||||
|
break; |
||||||
|
default: |
||||||
|
echo '错误的请求!'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
|
||||||
|
//登录方法 |
||||||
|
function login($userid,$loginid) { |
||||||
|
if($userid == $loginid) { |
||||||
|
echo 'ok'; |
||||||
|
//设置Cookie,保存7天 |
||||||
|
setcookie(uid, $userid, time()+604800); |
||||||
|
exit; |
||||||
|
} |
||||||
|
else { |
||||||
|
echo 'no'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
} |
||||||
|
//退出 |
||||||
|
function logout(){ |
||||||
|
setcookie(uid, "", time() - 3600); |
||||||
|
echo '已退出'; |
||||||
|
header("Location: ./index.php"); |
||||||
|
exit; |
||||||
|
} |
||||||
|
//删除 |
||||||
|
function delete($imgname,$userdir,$admindir) { |
||||||
|
//字符串分割 |
||||||
|
$imgdir = explode("/",$imgname); |
||||||
|
//只允许删除用户目录和管理员目录 |
||||||
|
if(($imgdir[0] == $userdir) || ($imgdir[0] == $admindir)){ |
||||||
|
if(unlink($imgname)) { |
||||||
|
echo 'ok'; //删除图片成功 |
||||||
|
} |
||||||
|
else { |
||||||
|
echo '删除失败,可能是图片不存在。'; |
||||||
|
} |
||||||
|
} |
||||||
|
else { |
||||||
|
echo '非法操作'; |
||||||
|
exit; |
||||||
|
} |
||||||
|
} |
||||||
|
?> |
@ -0,0 +1,70 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> |
||||||
|
<head> |
||||||
|
<meta charset="utf-8" /> |
||||||
|
<title>ImgURL - 简单、纯粹的图床程序。</title> |
||||||
|
<meta name="generator" content="EverEdit" /> |
||||||
|
<meta name="author" content="xiaoz.me" /> |
||||||
|
<meta name="keywords" content="ImgURL,免费图床,图床程序,小z图床,XZ Pic" /> |
||||||
|
<meta name="description" content="ImgURL是一个简单、纯粹的图床程序,让个人图床多一个选择。" /> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> |
||||||
|
<link href="./static/uploadfile.css" rel="stylesheet"> |
||||||
|
<link href="./static/style.css" rel="stylesheet"> |
||||||
|
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> |
||||||
|
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script> |
||||||
|
<script src="./static/jquery.uploadfile.min.js"></script> |
||||||
|
<script src = "https://libs.xiaoz.top/clipBoard.js/clipBoard.min.js"></script> |
||||||
|
<script src = "./static/embed.js"></script> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="msg"> |
||||||
|
<div class = "msg">复制成功!</div> |
||||||
|
</div> |
||||||
|
<div id = "loading"><center><img src="./static/ajax-load.gif" alt="" class = "img-responsive center-block"></center></div> |
||||||
|
<!--导航栏--> |
||||||
|
<div id="menu"> |
||||||
|
<div class="container"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-10 col-md-offset-1"> |
||||||
|
<nav class="navbar navbar-inverse" role="navigation"> |
||||||
|
<div class="container-fluid"> |
||||||
|
<div class="navbar-header"> |
||||||
|
<button type="button" class="navbar-toggle" data-toggle="collapse" |
||||||
|
data-target="#example-navbar-collapse"> |
||||||
|
<span class="sr-only">切换导航</span> |
||||||
|
<span class="icon-bar"></span> |
||||||
|
<span class="icon-bar"></span> |
||||||
|
<span class="icon-bar"></span> |
||||||
|
</button> |
||||||
|
<a class="navbar-brand" href="./index.php">ImgURL</a> |
||||||
|
</div> |
||||||
|
<div class="collapse navbar-collapse" id="example-navbar-collapse"> |
||||||
|
<ul class="nav navbar-nav"> |
||||||
|
<li><a href="./explore.php">探索发现</a></li> |
||||||
|
<li><a href="./pro.php">捐赠版</a></li> |
||||||
|
<li><a href="./about.php">关于</a></li> |
||||||
|
</ul> |
||||||
|
<ul class="nav navbar-nav navbar-right"> |
||||||
|
<?php |
||||||
|
if(isset($_COOKIE['uid'])) { |
||||||
|
include_once('./config.php'); |
||||||
|
$mydir = $config['admindir']; |
||||||
|
echo "<li><a href='./explore.php?dir=$mydir'>管理员</a></li>"; |
||||||
|
echo " | "; |
||||||
|
echo "<li><a href='./functions.php?type=logout'>退出</a></li>"; |
||||||
|
} |
||||||
|
else { |
||||||
|
echo "<li><a href='./login.php'>登录</a></li>"; |
||||||
|
} |
||||||
|
?> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!--导航栏END--> |
@ -0,0 +1,55 @@ |
|||||||
|
<?php |
||||||
|
//载入header |
||||||
|
include_once('./header.php'); |
||||||
|
?> |
||||||
|
<div style = "clear:both;"></div> |
||||||
|
<div class="container" style = "margin-bottom:40px;"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-10 col-md-offset-1"> |
||||||
|
<div id="fileuploader">Upload</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!--上传成功后--> |
||||||
|
<div class="container" style = "margin-bottom:40px;"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-10 col-md-offset-1"> |
||||||
|
<!--显示--> |
||||||
|
<div class="table-responsive" id = "relink"> |
||||||
|
<table class="table"> |
||||||
|
<tbody> |
||||||
|
<tr> |
||||||
|
<td width = "15%">URL</td> |
||||||
|
<td width = "75%"><input type="text" id = "linkurl" class="form-control"></td> |
||||||
|
<td width = "10%"><a href="javascript:;" class="btn btn-info" onclick = "copy('linkurl');">复制</a></td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>HTML</td> |
||||||
|
<td><input type="text" id = "htmlurl" class="form-control"></td> |
||||||
|
<td><a href="javascript:;" class="btn btn-info" onclick = "copy('htmlurl');">复制</a></td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>MarkDown</td> |
||||||
|
<td><input type="text" id = "mdurl" class="form-control"></td> |
||||||
|
<td><a href="javascript:;" class="btn btn-info" onclick = "copy('mdurl');">复制</a></td> |
||||||
|
</tr> |
||||||
|
<tr> |
||||||
|
<td>BBcode</td> |
||||||
|
<td><input type="text" id = "bbcode" class="form-control"></td> |
||||||
|
<td><a href="javascript:;" class="btn btn-info" onclick = "copy('bbcode');">复制</a></td> |
||||||
|
</tr> |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
<div id = "img-box"> |
||||||
|
<a href="" id = "img-url" target = "_blank"><img id = "show_img" src="" alt="" class = "img-responsive center-block img-thumbnail" width = "100%;" height = "100%;"></a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!--显示--> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<!--上传成功END--> |
||||||
|
<?php |
||||||
|
//载入页脚 |
||||||
|
include_once('./footer.php'); |
||||||
|
?> |
@ -0,0 +1,52 @@ |
|||||||
|
<?php |
||||||
|
//载入header |
||||||
|
include_once('./header.php'); |
||||||
|
?> |
||||||
|
<!--登录页面--> |
||||||
|
<div class="container" style = "margin-top:40px;"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-6 col-md-offset-3"> |
||||||
|
<form class="form-horizontal" role="form" method = "post"> |
||||||
|
<div class="form-group"> |
||||||
|
<label class="col-sm-2 control-label">用户名</label> |
||||||
|
<div class="col-sm-10"> |
||||||
|
<input type="text" class="form-control" id = "user"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="form-group"> |
||||||
|
<label class="col-sm-2 control-label">密 码</label> |
||||||
|
<div class="col-sm-10"> |
||||||
|
<input type="password" class="form-control" id="pass"> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="form-group"> |
||||||
|
<div class="col-sm-offset-2 col-sm-10"> |
||||||
|
<button type="button" class="btn btn-default" id = "login">登 录</button> <label for="" id = "loading" style = "color:#3E9827;display:none;">注册中...</label> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<script> |
||||||
|
$(document).ready(function(){ |
||||||
|
$("#login").click(function(){ |
||||||
|
var user = $("#user").val(); |
||||||
|
var pass = $("#pass").val(); |
||||||
|
|
||||||
|
$.post("./functions.php?type=login",{user:user,pass:pass},function(data,status){ |
||||||
|
if(data == 'ok') { |
||||||
|
window.location.href = "./index.php"; |
||||||
|
} |
||||||
|
else{ |
||||||
|
alert('用户名或密码不对'); |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
}); |
||||||
|
</script> |
||||||
|
<!--登录页面end--> |
||||||
|
<?php |
||||||
|
//载入页脚 |
||||||
|
include_once('./footer.php'); |
||||||
|
?> |
@ -0,0 +1,21 @@ |
|||||||
|
<?php |
||||||
|
include_once('header.php'); |
||||||
|
?> |
||||||
|
<div class="container" style = "margin-top:40px;"> |
||||||
|
<div class="row"> |
||||||
|
<div class="col-lg-10 col-md-offset-1"> |
||||||
|
<h1>捐赠版</h1> |
||||||
|
<p>ImgURL普通版和捐赠版功能上没有任何区别,不过您可以请作者喝一杯咖啡或吃一顿午餐即可获得捐赠版。可扫描下方二维码获取,留言请填写自己的网址。</p> |
||||||
|
<p><img src="https://cdn.xiaoz.me/wp-content/uploads/2013/12/juanzeng260.png" alt="" width="260" height="309" class="alignnone size-full wp-image-9144" /></p> |
||||||
|
<h3>技术支持</h3> |
||||||
|
<p>获得捐赠版的童鞋,可以去除底部版权,可提供首次安装及调试。(但不提供代码再次开发)</p> |
||||||
|
<ul> |
||||||
|
<li>Blog:<a href = "https://www.xiaoz.me/" target = "_blank">https://www.xiaoz.me/</a></li> |
||||||
|
<li>QQ:337003006</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<?php |
||||||
|
include_once('footer.php'); |
||||||
|
?> |
After Width: | Height: | Size: 24 KiB |
Loading…
Reference in new issue