添加登录验证码

pull/18/head
icret 2021-11-17 11:48:11 +08:00
parent 9b14b06e63
commit fcb2057be3
19 changed files with 396 additions and 321 deletions

View File

@ -66,6 +66,9 @@ RewriteRule config/(.*).(php)$ [F]
<details><summary><mark><font color=darkred>点击查看2.0版更新日志</font></mark></summary> <details><summary><mark><font color=darkred>点击查看2.0版更新日志</font></mark></summary>
* 2021-11-17 v2.4.3
- 增加登录验证码
* 2021-11-14 v2.4.2 * 2021-11-14 v2.4.2
- 增加上传日志 - 增加上传日志

View File

@ -44,7 +44,7 @@ if (isset($_POST['form'])) {
<div class="col-xs-9"> <div class="col-xs-9">
<div class="tab-content col-xs-9"> <div class="tab-content col-xs-9">
<div class="tab-pane fade active in" id="tab3Content1"> <div class="tab-pane fade active in" id="tab3Content1">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<label>网站域名,末尾不加"/" </label> <label>网站域名,末尾不加"/" </label>
<input type="url" class="form-control" name="domain" required="required" value="<?php echo $config['domain']; ?>" onkeyup="this.value=this.value.replace(/\s/g,'')"> <input type="url" class="form-control" name="domain" required="required" value="<?php echo $config['domain']; ?>" onkeyup="this.value=this.value.replace(/\s/g,'')">
@ -100,7 +100,7 @@ if (isset($_POST['form'])) {
</form> </form>
</div> </div>
<div class="tab-pane fade" id="tab3Content2"> <div class="tab-pane fade" id="tab3Content2">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<div class="switch"> <div class="switch">
<input type="hidden" name="mustLogin" value="0"> <input type="hidden" name="mustLogin" value="0">
@ -244,7 +244,7 @@ if (isset($_POST['form'])) {
</form> </form>
</div> </div>
<div class="tab-pane fade" id="tab3Content3"> <div class="tab-pane fade" id="tab3Content3">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<div class="switch"> <div class="switch">
<input type="hidden" name="ad_top" value="0"> <input type="hidden" name="ad_top" value="0">
@ -278,7 +278,7 @@ if (isset($_POST['form'])) {
</form> </form>
</div> </div>
<div class="tab-pane fade " id="tab3Content4"> <div class="tab-pane fade " id="tab3Content4">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<label>TinyImag Key 申请地址:<a href="https://tinypng.com/developers" target="_blank">https://tinypng.com/developers</a></label> <label>TinyImag Key 申请地址:<a href="https://tinypng.com/developers" target="_blank">https://tinypng.com/developers</a></label>
<input type="text" class="form-control input-sm" name="TinyImag_key" value="<?php echo $config['TinyImag_key']; ?>" title="开启后会受服务器到https://tinypng.com 速度影响,国内不建议开启!" onkeyup="this.value=this.value.replace(/\s/g,'')"> <input type="text" class="form-control input-sm" name="TinyImag_key" value="<?php echo $config['TinyImag_key']; ?>" title="开启后会受服务器到https://tinypng.com 速度影响,国内不建议开启!" onkeyup="this.value=this.value.replace(/\s/g,'')">
@ -290,7 +290,7 @@ if (isset($_POST['form'])) {
</form> </form>
</div> </div>
<div class="tab-pane fade" id="tab3Content5"> <div class="tab-pane fade" id="tab3Content5">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<div class="switch"> <div class="switch">
<input type="hidden" name="showSwitch" value="0"> <input type="hidden" name="showSwitch" value="0">

View File

@ -11,6 +11,18 @@ require_once APP_ROOT . '/application/chart.php';
if (!is_online()) { if (!is_online()) {
checkLogin(); checkLogin();
} }
// 删除统计文件
if (isset($_POST['del_total'])) {
@deldir($_POST['del_total']);
echo '
<script>
new $.zui.Messager("删除统计成功!", {type: "success" // 定义颜色主题
}).show();
</script>
';
// 延时1s刷新
Header("refresh:1;url=counts.php");
}
// 统计图表 // 统计图表
// array_reverse($arr,true) 倒叙数组并保持键值关系 // array_reverse($arr,true) 倒叙数组并保持键值关系
$char_data = read_chart_total(); $char_data = read_chart_total();
@ -51,7 +63,13 @@ if (is_array($char_data)) {
</style> </style>
<div class="row"> <div class="row">
<div class="clo-md-12"> <div class="clo-md-12">
<div class="alert alert-warning">统计时间:<?php echo $char_data['total_time']; ?></div> <div class="alert alert-warning">
<form action="counts.php" method="post">
<span>统计时间:<?php echo $char_data['total_time']; ?></span>
<input type="hidden" name="del_total" value="<?php echo APP_ROOT . '/admin/logs/counts/'; ?>">
<button class="btn btn-mini btn-danger">重新统计</button>
</form>
</div>
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<div class="col-md-6"> <div class="col-md-6">

View File

@ -0,0 +1 @@
{"filename":"14e91806a26be2aa8d8df5370b78fefc","total_time":"2021-11-17 02:10:38","date":"2021111702","chart_data":[{"2021\/11\/17\/":10},{"2021\/11\/16\/":0},{"2021\/11\/15\/":0},{"2021\/11\/14\/":0},{"2021\/11\/13\/":0},{"2021\/11\/12\/":0},{"2021\/11\/11\/":0},{"2021\/11\/10\/":0},{"2021\/11\/09\/":0},{"2021\/11\/08\/":0},{"2021\/11\/07\/":0},{"2021\/11\/06\/":0},{"2021\/11\/05\/":0},{"2021\/11\/04\/":0},{"2021\/11\/03\/":0},{"2021\/11\/02\/":0},{"2021\/11\/01\/":0},{"2021\/10\/31\/":0},{"2021\/10\/30\/":0},{"2021\/10\/29\/":0},{"2021\/10\/28\/":0},{"2021\/10\/27\/":0},{"2021\/10\/26\/":0},{"2021\/10\/25\/":0},{"2021\/10\/24\/":0},{"2021\/10\/23\/":0},{"2021\/10\/22\/":0},{"2021\/10\/21\/":0},{"2021\/10\/20\/":0},{"2021\/10\/19\/":0}],"chart_disk":[{"2021\/11\/17\/":1932747},{"2021\/11\/16\/":0},{"2021\/11\/15\/":0},{"2021\/11\/14\/":0},{"2021\/11\/13\/":0},{"2021\/11\/12\/":0},{"2021\/11\/11\/":0},{"2021\/11\/10\/":0},{"2021\/11\/09\/":0},{"2021\/11\/08\/":0},{"2021\/11\/07\/":0},{"2021\/11\/06\/":0},{"2021\/11\/05\/":0},{"2021\/11\/04\/":0},{"2021\/11\/03\/":0},{"2021\/11\/02\/":0},{"2021\/11\/01\/":0},{"2021\/10\/31\/":0},{"2021\/10\/30\/":0},{"2021\/10\/29\/":0},{"2021\/10\/28\/":0},{"2021\/10\/27\/":0},{"2021\/10\/26\/":0},{"2021\/10\/25\/":0},{"2021\/10\/24\/":0},{"2021\/10\/23\/":0},{"2021\/10\/22\/":0},{"2021\/10\/21\/":0},{"2021\/10\/20\/":0},{"2021\/10\/19\/":0}]}

View File

@ -0,0 +1 @@
{"filename":"6b20c35069d8821f92d9f88d9ae4c6da","total_time":"2021-11-16 17:48:35","date":"2021111617","chart_data":[{"2021\/11\/16\/":0},{"2021\/11\/15\/":0},{"2021\/11\/14\/":0},{"2021\/11\/13\/":0},{"2021\/11\/12\/":0},{"2021\/11\/11\/":0},{"2021\/11\/10\/":0},{"2021\/11\/09\/":0},{"2021\/11\/08\/":0},{"2021\/11\/07\/":0},{"2021\/11\/06\/":0},{"2021\/11\/05\/":0},{"2021\/11\/04\/":0},{"2021\/11\/03\/":0},{"2021\/11\/02\/":0},{"2021\/11\/01\/":0},{"2021\/10\/31\/":0},{"2021\/10\/30\/":0},{"2021\/10\/29\/":0},{"2021\/10\/28\/":0},{"2021\/10\/27\/":0},{"2021\/10\/26\/":0},{"2021\/10\/25\/":0},{"2021\/10\/24\/":0},{"2021\/10\/23\/":0},{"2021\/10\/22\/":0},{"2021\/10\/21\/":0},{"2021\/10\/20\/":0},{"2021\/10\/19\/":0},{"2021\/10\/18\/":0}],"chart_disk":[{"2021\/11\/16\/":0},{"2021\/11\/15\/":0},{"2021\/11\/14\/":0},{"2021\/11\/13\/":0},{"2021\/11\/12\/":0},{"2021\/11\/11\/":0},{"2021\/11\/10\/":0},{"2021\/11\/09\/":0},{"2021\/11\/08\/":0},{"2021\/11\/07\/":0},{"2021\/11\/06\/":0},{"2021\/11\/05\/":0},{"2021\/11\/04\/":0},{"2021\/11\/03\/":0},{"2021\/11\/02\/":0},{"2021\/11\/01\/":0},{"2021\/10\/31\/":0},{"2021\/10\/30\/":0},{"2021\/10\/29\/":0},{"2021\/10\/28\/":0},{"2021\/10\/27\/":0},{"2021\/10\/26\/":0},{"2021\/10\/25\/":0},{"2021\/10\/24\/":0},{"2021\/10\/23\/":0},{"2021\/10\/22\/":0},{"2021\/10\/21\/":0},{"2021\/10\/20\/":0},{"2021\/10\/19\/":0},{"2021\/10\/18\/":0}]}

View File

@ -0,0 +1 @@
{"filename":"14e91806a26be2aa8d8df5370b78fefc","date":"2021111711","total_time":"2021-11-17 11:12:43","dirnum":5,"filenum":42,"usage_space":"2.13MB","todayUpload":10,"yestUpload":0}

View File

@ -0,0 +1 @@
{"filename":"6b20c35069d8821f92d9f88d9ae4c6da","date":"2021111700","total_time":"2021-11-17 00:03:22","dirnum":4,"filenum":2,"usage_space":"10.81KB","todayUpload":0,"yestUpload":0}

33
admin/logs/upload/2021-11.php Executable file
View File

@ -0,0 +1,33 @@
<?php exit;?>
{"shztjo.jpg":{"date":"2021-11-16 17:23:27","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/16\/shztjo.jpg","cache":null}}
{"3ba19e.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba19e.jpg","cache":null}}
{"3ba5r6.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba5r6.jpg","cache":null}}
{"3ba5gm.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba5gm.jpg","cache":null}}
{"3ba6xu.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba6xu.jpg","cache":null}}
{"3ba5vp.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba5vp.jpg","cache":null}}
{"3ba3e6.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba3e6.jpg","cache":null}}
{"x4s12t.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/x4s12t.jpg","cache":null}}
{"3ba52z.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba52z.jpg","cache":null}}
{"3ba6o6.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba6o6.jpg","cache":null}}
{"3ba4sn.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba4sn.jpg","cache":null}}
{"3ba2e5.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba2e5.jpg","cache":null}}
{"3ba1y7.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba1y7.jpg","cache":null}}
{"3ba416.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba416.jpg","cache":null}}
{"3ba3ow.jpg":{"date":"2021-11-17 02:00:34","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba3ow.jpg","cache":null}}
{"3ba62z.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba62z.jpg","cache":null}}
{"3ba918.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba918.jpg","cache":null}}
{"3baal0.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3baal0.jpg","cache":null}}
{"3bacf1.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3bacf1.jpg","cache":null}}
{"3ba8yv.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba8yv.jpg","cache":null}}
{"3ba8hu.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba8hu.jpg","cache":null}}
{"3bac8v.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3bac8v.jpg","cache":null}}
{"3bac5p.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3bac5p.jpg","cache":null}}
{"3ba903.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba903.jpg","cache":null}}
{"3baa91.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3baa91.jpg","cache":null}}
{"3ba8hw.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba8hw.jpg","cache":null}}
{"3badg8.jpg":{"date":"2021-11-17 02:00:35","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3badg8.jpg","cache":null}}
{"3ba9tz.jpg":{"date":"2021-11-17 02:00:36","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3ba9tz.jpg","cache":null}}
{"3bafpq.jpg":{"date":"2021-11-17 02:00:36","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3bafpq.jpg","cache":null}}
{"3bamgu.jpg":{"date":"2021-11-17 02:00:36","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3bamgu.jpg","cache":null}}
{"3baio3.jpg":{"date":"2021-11-17 02:00:36","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/3baio3.jpg","cache":null}}
{"igqgo1.jpg":{"date":"2021-11-17 11:16:49","ip":"0.0.0.0","user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/86.0.4240.198 Safari\/537.36","path":"http:\/\/localhost\/i\/2021\/11\/17\/igqgo1.jpg","cache":null}}

41
admin/logs/verson/verson.json Executable file
View File

@ -0,0 +1,41 @@
{
"url": "https://api.github.com/repos/icret/EasyImages2.0/releases/53348517",
"assets_url": "https://api.github.com/repos/icret/EasyImages2.0/releases/53348517/assets",
"upload_url": "https://uploads.github.com/repos/icret/EasyImages2.0/releases/53348517/assets{?name,label}",
"html_url": "https://github.com/icret/EasyImages2.0/releases/tag/2.4.2",
"id": 53348517,
"author": {
"login": "icret",
"id": 16373024,
"node_id": "MDQ6VXNlcjE2MzczMDI0",
"avatar_url": "https://avatars.githubusercontent.com/u/16373024?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/icret",
"html_url": "https://github.com/icret",
"followers_url": "https://api.github.com/users/icret/followers",
"following_url": "https://api.github.com/users/icret/following{/other_user}",
"gists_url": "https://api.github.com/users/icret/gists{/gist_id}",
"starred_url": "https://api.github.com/users/icret/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/icret/subscriptions",
"organizations_url": "https://api.github.com/users/icret/orgs",
"repos_url": "https://api.github.com/users/icret/repos",
"events_url": "https://api.github.com/users/icret/events{/privacy}",
"received_events_url": "https://api.github.com/users/icret/received_events",
"type": "User",
"site_admin": false
},
"node_id": "RE_kwDOCzgjBc4DLgil",
"tag_name": "2.4.2",
"target_commitish": "master",
"name": "EasyImage2.0 简单图床 ver:2.4.2",
"draft": false,
"prerelease": false,
"created_at": "2021-11-14T15:25:21Z",
"published_at": "2021-11-15T02:17:03Z",
"assets": [
],
"tarball_url": "https://api.github.com/repos/icret/EasyImages2.0/tarball/2.4.2",
"zipball_url": "https://api.github.com/repos/icret/EasyImages2.0/zipball/2.4.2",
"body": "- 2021-11-14 v2.4.2\r\n- 增加上传日志"
}

View File

@ -100,7 +100,7 @@ if (isset($_GET['reimg'])) {
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<div class="col-md-4"> <div class="col-md-4">
<form class="form-condensed" action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> <form class="form-condensed" action="<?php $_SERVER['SCRIPT_NAME']; ?>" method="post">
<label for="exampleInputMoney1"> <label for="exampleInputMoney1">
新Token需按要求填入 新Token需按要求填入
<code>/config/api_key.php</code> <code>/config/api_key.php</code>
@ -115,7 +115,7 @@ if (isset($_GET['reimg'])) {
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<form></form> <form></form>
<form class="form-condensed" action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> <form class="form-condensed" action="<?php $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<label for="exampleInputAccount6">根据ID/Token查找用户信息</label> <label for="exampleInputAccount6">根据ID/Token查找用户信息</label>
<input type="text" name="radio-value" id="exampleInputAccount6" class="form-control" placeholder="输入信息" value="<?php echo @$radio_value; ?>"> <input type="text" name="radio-value" id="exampleInputAccount6" class="form-control" placeholder="输入信息" value="<?php echo @$radio_value; ?>">
@ -187,7 +187,7 @@ if (isset($_GET['reimg'])) {
</table> </table>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> <form action="<?php $_SERVER['SCRIPT_NAME']; ?>" method="post">
<div class="form-group"> <div class="form-group">
<label for="exampleInputInviteCode1" style="color:red">删除所选日期文件夹(删除之后无法恢复!):</label> <label for="exampleInputInviteCode1" style="color:red">删除所选日期文件夹(删除之后无法恢复!):</label>
<input type="text" class="form-control form-date" name="delDir" value="<?php echo date('Y/m/d/'); ?>" readonly=""> <input type="text" class="form-control form-date" name="delDir" value="<?php echo date('Y/m/d/'); ?>" readonly="">
@ -248,7 +248,7 @@ if (isset($_GET['reimg'])) {
} }
echo ' echo '
<span class="label label-primary label-outline">总数:' . $cache_num . '</span>&nbsp; <span class="label label-primary label-outline">总数:' . $cache_num . '</span>&nbsp;
<form action="' . $_SERVER['PHP_SELF'] . '" method="post"> <form action="' . $_SERVER['SCRIPT_NAME'] . '" method="post">
<input type="hidden" name="delDir" value="/suspic/" readonly=""> <input type="hidden" name="delDir" value="/suspic/" readonly="">
<button class="btn btn-danger btn-mini" ">删除全部违规图片</button> <button class="btn btn-danger btn-mini" ">删除全部违规图片</button>
</form> </form>
@ -260,10 +260,10 @@ if (isset($_GET['reimg'])) {
</div> </div>
</div> </div>
<div class="col-md-5"> <div class="col-md-5">
<form class="form-inline" action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> <form class="form-inline" action="<?php $_SERVER['SCRIPT_NAME']; ?>" method="post">
<span class="label label-badge label-primary label-outline">已缓存文件:<?php echo getFileNumber(APP_ROOT . $config['path'] . 'cache/'); ?> <span class="label label-badge label-primary label-outline">已缓存文件:<?php echo getFileNumber(APP_ROOT . $config['path'] . 'thumb/'); ?>
占用<?php echo getDistUsed(getDirectorySize(APP_ROOT . $config['path'] . 'cache/')); ?> 占用<?php echo getDistUsed(getDirectorySize(APP_ROOT . $config['path'] . 'thumb/')); ?>
<button type="submit" class="btn btn-mini btn-primary" name="delDir" value="cache/" onClick="return confirm('确认要清理缓存?\n* 删除文件夹后将无法恢复!');">清理</button></span> <button type="submit" class="btn btn-mini btn-primary" name="delDir" value="thumb/" onClick="return confirm('确认要清理缓存?\n* 删除文件夹后将无法恢复!');">清理</button></span>
</form> </form>
</div> </div>
</div> </div>

50
application/captcha.php Executable file
View File

@ -0,0 +1,50 @@
<?php
session_start(); //设置session
$width = 150; //设置图片宽为300像素
$height = 40; //设置图片高为40像素
$image = imagecreatetruecolor($width, $height); //设置验证码大小的函数
$bgcolor = imagecolorallocate($image, 255, 255, 255); //验证码颜色RGB为(255,255,255)#ffffff
imagefill($image, 0, 0, $bgcolor); //区域填充
$cap_code = "";
for($i=0;$i<4;$i++){
$fontsize = 12; //设置字体大小
$fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));
//数字越大颜色越浅这里是深颜色0-120
$data = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890'; //添加字符串
$fontcontent = substr($data, rand(0,strlen($data)),1); //去除值,字符串截取方法
$cap_code.=$fontcontent; //.=连续定义变量
$x = ($i*150/4)+rand(5,10);
$y = rand(5,10);
//设置坐标
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION['code'] = $cap_code; //存到session
//设置干扰元素,设置雪花点
for($i=0;$i<300;$i++){
$inputcolor = imagecolorallocate($image, rand(50,200), rand(20,200), rand(50,200));
//设置颜色20-200颜色比数字浅不干扰阅读
imagesetpixel($image, rand(1,149), rand(1,39), $inputcolor);
//画一个单一像素的元素
}
//增加干扰元素,设置横线(先设置线的颜色,在设置横线)
for ($i=0;$i<4;$i++) {
$linecolor = imagecolorallocate($image, rand(20,220), rand(20,220),rand(20,220));
//设置线的颜色
imageline($image, rand(1,149), rand(1,39), rand(1,299), rand(1,149), $linecolor);
}
//因为有些浏览器访问的content-type会是文本型所以我们需要设置成图片的格式类型
header('Content-Type:image/png');
imagepng($image); //建立png函数
imagedestroy($image);

View File

@ -7,7 +7,7 @@ require_once './header.php';
echo '<div class="col-md-4 col-md-offset-4"> echo '<div class="col-md-4 col-md-offset-4">
<div id="title" style="margin: 10px;"></div> <div id="title" style="margin: 10px;"></div>
<form class="form-inline" method="get" action="' . $_SERVER['PHP_SELF'] . '" id="form" name="delForm" onSubmit="getStr();"> <form class="form-inline" method="get" action="' . $_SERVER['SCRIPT_NAME'] . '" id="form" name="delForm" onSubmit="getStr();">
<div class="form-group"> <div class="form-group">
<label for="exampleInputInviteCode3">删除图片-格式:</label> <label for="exampleInputInviteCode3">删除图片-格式:</label>
<input type="text" class="form-control" id="exampleInputInviteCode3" name="url" placeholder="https://i1.100024.xyz/i/2021/05/04/10fn9ei.jpg"> <input type="text" class="form-control" id="exampleInputInviteCode3" name="url" placeholder="https://i1.100024.xyz/i/2021/05/04/10fn9ei.jpg">

View File

@ -1,16 +1,5 @@
<?php <?php
// 设置html为utf8 require_once __DIR__.'/../config/base.php';
@header('Content-Type:text/html;charset=utf-8');
//将时区设置为中国·上海
@ini_set('date.timezone', 'Asia/Shanghai');
@date_default_timezone_set('Asia/Shanghai');
// 修改内存限制 根据服务器配置选择低于128M容易出现上传失败你懂得图片挺占用内存的
@ini_set('memory_limit', '512M');
// 定义根目录
@define('APP_ROOT', str_replace('\\', '/', realpath(dirname(__FILE__) . '/../')));
// 判断当前的系统类型是否为windows
@define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0);
require_once APP_ROOT . '/config/config.php'; require_once APP_ROOT . '/config/config.php';
// 判断GIF图片是否为动态 // 判断GIF图片是否为动态
@ -312,7 +301,7 @@ function getDistUsed($number)
// 根据url填写active // 根据url填写active
function getActive($url) function getActive($url)
{ {
$arr = $_SERVER['PHP_SELF']; $arr = $_SERVER['SCRIPT_NAME'];
if (strpos($arr, $url)) { if (strpos($arr, $url)) {
return 'active'; return 'active';
}else { }else {
@ -345,7 +334,6 @@ function getDel($url, $type)
{ {
global $config; global $config;
// url本地化 // url本地化
//$url = htmlspecialchars(parse_url($url)['path']); // 过滤html 获取url path
$url = htmlspecialchars(str_replace($config['imgurl'], '', $url)); // 过滤html 获取url path $url = htmlspecialchars(str_replace($config['imgurl'], '', $url)); // 过滤html 获取url path
$url = urldecode(trim($url)); $url = urldecode(trim($url));
@ -669,13 +657,13 @@ function creat_cache_images($imgName)
global $config; global $config;
$old_img_path = APP_ROOT . config_path() . $imgName; // 获取要创建缩略图文件的绝对路径 $old_img_path = APP_ROOT . config_path() . $imgName; // 获取要创建缩略图文件的绝对路径
$cache_path = APP_ROOT . $config['path'] . 'cache/'; // cache目录的绝对路径 $cache_path = APP_ROOT . $config['path'] . 'thumb/'; // cache目录的绝对路径
if(!is_dir($cache_path)){ // 创建cache目录 if(!is_dir($cache_path)){ // 创建cache目录
mkdir($cache_path, 0777, true); mkdir($cache_path, 0777, true);
} }
if (!isAnimatedGif($old_img_path)) { // 仅针对非gif创建图片缩略图 if (!isAnimatedGif($old_img_path)) { // 仅针对非gif创建图片缩略图
$new_imgName = APP_ROOT . $config['path'] . 'cache/' . date('Y_m_d') . '_' . $imgName; // 缩略图缓存的绝对路径 $new_imgName = APP_ROOT . $config['path'] . 'thumb/' . date('Y_m_d') . '_' . $imgName; // 缩略图缓存的绝对路径
Thumb::out($old_img_path, $new_imgName, 300, 300); // 保存缩略图 Thumb::out($old_img_path, $new_imgName, 300, 300); // 保存缩略图
} }
} }
@ -691,9 +679,9 @@ function back_cache_images($url)
} else { } else {
$cache_image_file = str_replace($config['path'], '', $cache_image_file); // 将网址中的/i/去除 $cache_image_file = str_replace($config['path'], '', $cache_image_file); // 将网址中的/i/去除
$cache_image_file = str_replace('/', '_', $cache_image_file); // 将文件的/转换为_ $cache_image_file = str_replace('/', '_', $cache_image_file); // 将文件的/转换为_
$isFile = APP_ROOT . $config['path'] . 'cache/' . $cache_image_file; // 缓存文件的绝对路径 $isFile = APP_ROOT . $config['path'] . 'thumb/' . $cache_image_file; // 缓存文件的绝对路径
if (file_exists($isFile)) { // 缓存文件是否存在 if (file_exists($isFile)) { // 缓存文件是否存在
return $config['imgurl'] . $config['path'] . 'cache/' . $cache_image_file; // 存在则返回缓存文件 return $config['imgurl'] . $config['path'] . 'thumb/' . $cache_image_file; // 存在则返回缓存文件
} else { } else {
return $url; // 不存在直接返回url return $url; // 不存在直接返回url
} }
@ -710,7 +698,7 @@ function back_cache_images($url)
function get_whole_url($search = null) function get_whole_url($search = null)
{ {
$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
$php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']; $php_self = $_SERVER['SCRIPT_NAME'] ? $_SERVER['SCRIPT_NAME'] : $_SERVER['SCRIPT_NAME'];
$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : ''; $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self . (isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : $path_info); $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self . (isset($_SERVER['QUERY_STRING']) ? '?' . $_SERVER['QUERY_STRING'] : $path_info);
$whole_domain = $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relate_url; $whole_domain = $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relate_url;

View File

@ -67,9 +67,9 @@ require_once APP_ROOT . '/application/total_files.php';
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li class="' . getActive('admin.inc') . '";><a href="' . $config['domain'] . '/admin/admin.inc.php' . '"><i class="icon icon-desktop"> 网站设置</i></a></li> <li class="' . getActive('admin.inc') . '";><a href="' . $config['domain'] . '/admin/admin.inc.php' . '"><i class="icon icon-desktop"> 网站设置</i></a></li>
<li class="divider"></li> <li class="divider"></li>
<li class="' . getActive('tool') . '";><a href="' . $config['domain'] . '/admin/tool.php' . '"><i class="icon icon-rocket"> 快捷工具</i></a></li> <li class="' . getActive('tools') . '";><a href="' . $config['domain'] . '/admin/tools.php' . '"><i class="icon icon-rocket"> 快捷工具</i></a></li>
<li class="divider"></li> <li class="divider"></li>
<li class="' . getActive('info') . '";><a href="' . $config['domain'] . '/admin/info.php' . '"><i class="icon icon-pie-chart"> 上传统计</i></a></li> <li class="' . getActive('info') . '";><a href="' . $config['domain'] . '/admin/counts.php' . '"><i class="icon icon-pie-chart"> 上传统计</i></a></li>
</ul> </ul>
</li> </li>
'; ';

View File

@ -4,14 +4,24 @@
*/ */
require_once 'function.php'; require_once 'function.php';
require_once APP_ROOT . '/application/header.php'; require_once APP_ROOT . '/application/header.php';
// 提交登录
if (isset($_POST['password'])) { header("Content-Type: text/html;charset=utf-8");
checkLogin(); if (isset($_REQUEST['code'])) {
header("refresh:2;url=" . $config['domain'] . ""); session_start();
if ($_REQUEST['code'] == $_SESSION['code']) {
// 提交登录
if (isset($_POST['password'])) {
checkLogin();
header("refresh:2;url=" . $config['domain'] . "");
}
} else {
echo '<script> alert("验证码错误");</script>';
}
} }
?> ?>
<form class="form-horizontal" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" onsubmit="return md5_post()"> <form class="form-horizontal" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post" onsubmit="return md5_post()">
<div class="form-group"> <div class="form-group">
<label for="account" class="col-sm-2">账号</label> <label for="account" class="col-sm-2">账号</label>
<div class="has-success col-md-3 col-sm-5"> <div class="has-success col-md-3 col-sm-5">
@ -25,6 +35,15 @@ if (isset($_POST['password'])) {
</div> </div>
<input type="hidden" name="password" id="md5_password"> <input type="hidden" name="password" id="md5_password">
</div> </div>
<div class="form-group">
<label class="col-sm-2">验证码</label>
<div class="has-success col-md-3 col-sm-5">
<label><img src="<?php echo $config["domain"]."/application/captcha.php";?>" onClick="this.src='<?php echo $config["domain"]."/application/captcha.php";?>?nocache='+Math.random()" title="点击换一张" width="150px" height="40px" /></label>
<input class="form-control" type="text" name="code" value="" placeholder="请输入上方4位数验证码 - 注意大小写" />
</div>
</div>
<div class="form-group"> <div class="form-group">
<div class="col-sm-offset-2 col-sm-10"> <div class="col-sm-offset-2 col-sm-10">
<div class="checkbox"> <div class="checkbox">
@ -53,5 +72,4 @@ if (isset($_POST['password'])) {
</script> </script>
<?php <?php
require_once APP_ROOT . '/application/footer.php'; require_once APP_ROOT . '/application/footer.php';

36
config/base.php Executable file
View File

@ -0,0 +1,36 @@
<?php
/**
* EasyImage2.0 - 简单图床基础配置
* @author icret
* @email lemonim@qq.com
* @Github https://github.com/icret/easyImages2.0
* QQ Group 623688684
* @Last 2021-11-17 11:24:35
* 上传服务器后第一次打开会检查运行环境,请根据提示操作;
* 检查环境仅会在第一开始开始出现并在config目录下生成EasyImage.lock文件如需再次查看请删除此文件。
* 敬请注意本程序为开源程序你可以使用本程序在任何的商业、非商业项目或者网站中。但请你务必保留代码中相关信息页面logo和页面上必要的链接可以清除
* 本人仅为程序开源创作,如非法网站与本人无关,请勿用于非法用途
* 请为本人博客www.545141.com加上网址链接谢谢支持。作为开发者你可以对相应的后台功能进行扩展增删改相应代码,但请保留代码中相关来源信息(例如:本人博客,邮箱等)
* 如果因安装问题或其他问题可以给我发邮件。
*
* 配置分为两大区块 - 1.基础配置 2.图床配置
*/
/*---------------基础配置-------------------*/
// 设置html为utf8
@header('Content-Type:text/html;charset=utf-8');
//将时区设置为中国·上海
@ini_set('date.timezone', 'Asia/Shanghai');
@date_default_timezone_set('Asia/Shanghai');
// 修改内存限制 根据服务器配置选择低于128M容易出现上传失败你懂得图片挺占用内存的
@ini_set('memory_limit', '512M');
// 定义根目录
@define('APP_ROOT', str_replace('\\', '/', realpath(dirname(__FILE__) . '/../')));
// 判断当前的系统类型是否为windows
@define('IS_WIN', strstr(PHP_OS, 'WIN') ? 1 : 0);

View File

@ -1,189 +0,0 @@
<?php
/**
* EasyImage2.0 - 简单图床配置
* @author icret
* @email lemonim@qq.com
* @Github https://github.com/icret/easyImages2.0
* QQ Group 623688684
* @Last 2021-5-25 21:12:34
* 上传服务器后第一次打开会检查运行环境,请根据提示操作;
* 检查环境仅会在第一开始开始出现并在config目录下生成EasyImage.lock文件如需再次查看请删除此文件。
* 敬请注意本程序为开源程序你可以使用本程序在任何的商业、非商业项目或者网站中。但请你务必保留代码中相关信息页面logo和页面上必要的链接可以清除
* 本人仅为程序开源创作,如非法网站与本人无关,请勿用于非法用途
* 请为本人博客www.545141.com加上网址链接谢谢支持。作为开发者你可以对相应的后台功能进行扩展增删改相应代码,但请保留代码中相关来源信息(例如:本人博客,邮箱等)
* 如果因安装问题或其他问题可以给我发邮件。
*
* 配置分为两大区块 - 1.基础配置 2.图床配置
*/
/*---------------基础配置-------------------*/
// 设置html为utf8
@header('Content-Type:text/html;charset=utf-8');
//将时区设置为中国·上海
@ini_set('date.timezone', 'Asia/Shanghai');
@date_default_timezone_set('Asia/Shanghai');
// 修改内存限制 根据服务器配置选择低于128M容易出现上传失败你懂得图片挺占用内存的
@ini_set('memory_limit', '512M');
// 定义根目录
@define('APP_ROOT', str_replace('\\', '/', realpath(dirname(__FILE__) . '/../')));
/*---------------图床配置-------------------*/
$config = array(
// 网站标题
'title' => '简单图床 - EasyImage',
// 网站关键字
'keywords' => '简单图床,easyimage,无数据库图床,PHP多图长传程序,自适应页面,HTML5,markdown,bbscode,一键复制',
// 网站描述
'description' => '简单图床EasyImage是一款支持多文件上传的无数据库图床,可以完美替代PHP多图上传程序最新html5自适应页面兼容手机电脑上传后返回图片直链markdown图片论坛贴图bbscode链接简单方便支持一键复制支持多域名api上传。',
// 网站公告 为空则不显示
'tips' => '本站仅做演示用,不定时清理图片单文件≤5M每次上传≤30张',
/**
* 网站域名与图片链接域名可以不同比如A域名上传可以返回B域名图片链接A、B需绑定到同一空间下
* 如果不变的话下边2个填写成一样的
*/
// 网站域名,末尾不加"/"
'domain' => 'http://localhost',
// 图片链接域名,末尾不加"/"
'imgurl' => 'http://localhost',
// 登录上传和后台管理密码,管理用户名为admin
'password' => 'admin@123',
// 是否开启登录上传 开启:true 关闭:false
'mustLogin' => false,
// 是否开启API上传 开启:true 关闭:false
'apiStatus' => false,
/**
* 存储路径 前后要加"/"
* 可根据Apache/Nginx配置安全参考https://www.545141.com/981.html README.md
*/
'path' => '/i/',
/** 文件的命名方式 更改后不影响之前上传的
* date 以上传时间 192704
* unix 以Unix时间 1635074840
* uniqid 基于以微秒计的当前时间 6175436c73418
* guid 全球唯一标识符 6EDAD0CC-AB0C-4F61-BCCA-05FAD65BF0FA
* md5 md5加密时间 3888aa69eb321a2b61fcc63520bf6c82
* sha1 sha1加密微秒 654faac01499e0cb5fb0e9d78b21e234c63d842a
* default 将上传时间+随机数转换为36进制 vx77yu
*/
'imgName' => 'default',
// 最大上传限制 默认为5M 请使用工具转换Mb http://www.bejson.com/convert/filesize/
'maxSize' => 5242880,
// 每次最多上传图片数
'maxUploadFiles' => 30,
// 是否开启水印:0关闭1文字水印2图片水印 不能使用动态gif添加水印
'watermark' => 1,
// 水印文字内容
'waterText' => 'img.545141.com',
/**
* 水印位置
* 0随机位置在1-8之间随机选取一个位置
* 1:顶部居左 2:顶部居中 3:顶部居右 4:左边居中
* 5:图片中心 6:右边居中 7:底部居左 8:底部居中 9:底部居右
*/
'waterPosition' => 5,
// 水印文字颜色 rgba 末尾为透明度0-127 0为不透明
'textColor' => '47,79,79,0',
// 水印文字大小
'textSize' => 16,
// 字体路径 如果想改变字体,请选择支持中文的 GB/2312 字体
'textFont' => '/public/static/hkxzy.ttf',
// 图片水印路径 支持GIF,JPG,BMP,PNG和PNG alpha
'waterImg' => 'public/images/watermark.png',
// 允许上传的图片扩展名
'extensions' => "bmp,jpg,png,tif,gif,pcx,tga,svg,webp,jpeg,tga,svg,ico",
/* 轻微有损压缩图片 开启:true 关闭:false
* 此压缩有可能使图片变大!特别是小图片 也有一定概率改变图片方向
* 开启后会增加服务器负担
*/
'compress' => false,
// 转换图片为指定格式 可选:''|'png'|'jpeg'|'gif'|'bmp';默认值:''
'imgConvert' => '',
// 最大上传宽度
'maxWidth' => 10240,
// 最大上传高度
'maxHeight' => 10240,
// 允许上传的最小宽度
'minWidth' => 5,
// 允许上传的最小高度
'minHeight' => 5,
// 改变图片宽高 宽度和高度请设置 image_x image_y 开启:true 关闭:false 关闭下image_x和image_y设置不生效
'imgRatio' => false,
// 缩减的最大高度
'image_x' => 1000,
// 缩减的最大宽度
'image_y' => 800,
// 开启静态文件CDN 开启:true 关闭:false
'static_cdn' => false,
// 静态文件CDN加速网址 末尾不加 /
'static_cdn_url' => '//cdn.jsdelivr.net/gh/icret/EasyImages2.0',
// 开启顶部广告 开启:true 关闭:false
'ad_top' => false,
// 顶部广告内容 支持html
'ad_top_info' => '
<div id="ad" class="col-md-12" align="center" style="padding:5px;">
<!--广告 按照这个范例替换相应链接,如果想多几个广告,就多复制几个-->
<a href="https://app.cloudcone.com/?ref=3521" target="_blank"><img src="/public/images/ad.jpg" /></a>
</div>
',
// 开启底部广告 开启:true 关闭:false
'ad_bot' => false,
// 底部广告内容 支持html
'ad_bot_info' => '
<div id="ad" class="col-md-12" align="center" style="padding:5px;">
<!--广告 按照这个范例替换相应链接,如果想多几个广告,就多复制几个-->
<a href="https://app.cloudcone.com/?ref=3521" target="_blank"><img src="/public/images/ad.jpg" /></a>
</div>
',
// 开启游客预览(广场)开启:true 关闭:false
'showSwitch' => true,
// 默认预览数量,可在网址后填写参数实时更改预览数量 如https://img.545141.com/application/list.php?num=3
'listNumber' => 20,
// 上传框底部自定义信息仅支持html格式 可以放置统计代码 下面是举例:
'customize' => '
<!-- 统计代码-->
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?5320b69f4f1caa9328dfada73c8e6a75";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<!-- 自定义js举例非img.545141.com跳转
<img style="display:none" src=" " onerror=\'this.onerror=null;var currentDomain="img."+"545141." + "com"; var str1=currentDomain; str2="docu"+"ment.loca"+"tion.host"; str3=eval(str2) ;if( str1!=str3 ){ do_action = "loca" + "tion." + "href = loca" + "tion.href" + ".rep" + "lace(docu" +"ment"+".loca"+"tion.ho"+"st," + "currentDomain" + ")";eval(do_action) }\' />
-->
<!--自定义代码举例打赏、QQ邮箱、QQ群 可删除
<iframe src="https://img.545141.com/sponsor/index.html" style="overflow-x:hidden;overflow-y:hidden; border:0xp none #fff; min-height:240px; width:100%;" frameborder="0" scrolling="no"></iframe>
<a target="_blank" href="https://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&amp;email=cR0UHB4fGBwxAABfEh4c">
<i class="icon icon-envelope-alt">联系邮箱 </i></span>
</a>
<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=3feb4e8be8f1839f71e53bf2e876de36afc6889b2630c33c877d8df5a5583a6f">
<i class="icon icon-qq">加入QQ群</i></span>
</a>
<a target="_blank" href="/master.zip"><i class="icon icon-download-alt">下载源码</i></a>
-->
',
// PHP插件检测-安全设置检测-版本检测 开启:true 关闭:false
'checkEnv' => true,
/* 图片监黄 开启:true 关闭:false
* https://moderatecontent.com/ 获取key并填入/config/api_key.php的图片检查key
* 开启后会受服务器到https://moderatecontent.com/ 速度影响,国内不建议开启!
*/
'checkImg' => false,
// 设置是不良图片概率,概率越大准确率越高,
'checkImg_value' => 50,
// 当前版本
'version' => '2.3.1'
);

View File

@ -76,7 +76,7 @@ $config=Array
'checkImg_value'=>50, 'checkImg_value'=>50,
'upload_logs'=>1, 'upload_logs'=>1,
'cache_freq'=>2, 'cache_freq'=>2,
'version'=>'2.4.2', 'version'=>'2.4.3',
'form'=>'', 'form'=>'',
'TinyImag_key'=>'', 'TinyImag_key'=>'',
'moderatecontent_key'=>'', 'moderatecontent_key'=>'',

73
public/static/verifycode.js Executable file
View File

@ -0,0 +1,73 @@
$(function () {
var show_num = [];
draw(show_num);
$("#canvas").on('click', function () {
draw(show_num);
})
$(".btn").on('click', function () {
var val = $(".input-val").val().toLowerCase();
var num = show_num.join("");
if (val == '') {
alert('请输入验证码!');
} else if (val == num) {
alert('提交成功!');
$(".input-val").val('');
// draw(show_num);
} else {
alert('验证码错误!请重新输入!');
$(".input-val").val('');
// draw(show_num);
}
})
})
//生成并渲染出验证码图形
function draw(show_num) {
var canvas_width = $('#canvas').width();
var canvas_height = $('#canvas').height();
var canvas = document.getElementById("canvas"); //获取到canvas的对象演员
var context = canvas.getContext("2d"); //获取到canvas画图的环境演员表演的舞台
canvas.width = canvas_width;
canvas.height = canvas_height;
var sCode = "a,b,c,d,e,f,g,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0";
var aCode = sCode.split(",");
var aLength = aCode.length; //获取到数组的长度
for (var i = 0; i < 4; i++) { //这里的for循环可以控制验证码位数如果想显示6位数4改成6即可
var j = Math.floor(Math.random() * aLength); //获取到随机的索引值
// var deg = Math.random() * 30 * Math.PI / 180;//产生0~30之间的随机弧度
var deg = Math.random() - 0.5; //产生一个随机弧度
var txt = aCode[j]; //得到随机的一个内容
show_num[i] = txt.toLowerCase();
var x = 10 + i * 20; //文字在canvas上的x坐标
var y = 20 + Math.random() * 8; //文字在canvas上的y坐标
context.font = "bold 23px 微软雅黑";
context.translate(x, y);
context.rotate(deg);
context.fillStyle = randomColor();
context.fillText(txt, 0, 0);
context.rotate(-deg);
context.translate(-x, -y);
}
for (var i = 0; i <= 5; i++) { //验证码上显示线条
context.strokeStyle = randomColor();
context.beginPath();
context.moveTo(Math.random() * canvas_width, Math.random() * canvas_height);
context.lineTo(Math.random() * canvas_width, Math.random() * canvas_height);
context.stroke();
}
for (var i = 0; i <= 30; i++) { //验证码上显示小点
context.strokeStyle = randomColor();
context.beginPath();
var x = Math.random() * canvas_width;
var y = Math.random() * canvas_height;
context.moveTo(x, y);
context.lineTo(x + 1, y + 1);
context.stroke();
}
}
//得到随机的颜色值
function randomColor() {
var r = Math.floor(Math.random() * 256);
var g = Math.floor(Math.random() * 256);
var b = Math.floor(Math.random() * 256);
return "rgb(" + r + "," + g + "," + b + ")";
}