diff --git a/README.md b/README.md
index d797a2f..c4db86f 100755
--- a/README.md
+++ b/README.md
@@ -66,15 +66,29 @@ RewriteRule config/(.*).(php)$ – [F]
点击查看2.0版更新日志
-* 2021年10月30日 v2.3.1
+* 2021-11-5 v2.4.0
+- 增加统计缓存
+- 增加最近30天上传统计与占用空间图表
+- 增加初始化安装(可能会不支持二级目录安装,可删除install文件夹初始化)
+- 增加在线编辑配置(之前是需要修改config.php文件,现在可以直接网站端修改了)
+- 删除广场会导致浏览速度变慢的代码
+- 删除快捷配置会导致浏览速度变慢的代码
+
+
+* 2021-11-3 v2.3.2
+- 增加广场图片缓存
+- 重构广场样式
+
+* 2021-11-3 v2.3.1
- 增加监黄接口
-- 增加对php5.6-php8.0的支持
-- 修复二级目录无法使用
+- 增加审核违规图片
+- 修复对php5.6的支持
+- 修复二级目录的安装
* 2021-10-24 v2.3.0
- 将服务器环境监测改为第一次打开时自动检测(如需再次展示需删除config目录下的EasyImage.lock)
- 增加快捷操作中心显示服务信息
-- 增加自定义上传文件的命名方式(详见config.php文件里的注释)
+- 增加对上传文件的命名方式(详见config.php文件里的注释)
- 增加隐私政策、服务条款、DMCA
- 增加自定义静态文件CDN源
- 增加dns-prefetch
@@ -134,7 +148,7 @@ RewriteRule config/(.*).(php)$ – [F]
deny all;
}
```
-- - 或者参考:https://www.545141.com/981.html
+- - 或者参考:https://www.545141.com/992.html https://www.545141.com/939.html
- 一些精简
* 2021-4-14 v2.0.2.1 Dev1
@@ -200,7 +214,13 @@ RewriteRule config/(.*).(php)$ – [F]
- 全新的压缩 将文件继续缩小
- 全新的目录系统,精简代码
- 设置仅允许在config.php修改,注释更加明了,即使没有代码基础也可以操作
-- 增加新的文件管理系统
+- 增加新的文件管理系统,感谢 tinyfilemanager
+- ~~支持文字/图片水印 可自定义文字颜色~~
+- ~~支持文字水印背景颜色~~
+- ~~支持文字水印透明度~~
+- ~~支持删除远程上传文件~~ -> 不再支持删除远程文件
+- ~~(支持开启/关闭api自定义文字水印)~~
+- ~~支持删除自定义删除图片(仅管理员)~~
访问者IP:
https://tinypng.com/developers
';
} else {
echo '压缩图片 TinyImag Key已填写
';
}
- if (empty($moderatecontent['key'])) {
- echo '图片检查 moderatecontent key未填写,申请地址: https://moderatecontent.com/';
+ if (empty($config['moderatecontent_key'])) {
+ echo '图片检查 moderatecontent key未填写,申请地址: https://client.moderatecontent.com/';
} else {
echo '图片检查 moderatecontent key已填写';
}
- ?>
统计时间: ' . read_total_json('total_time') . ';文件夹:' . read_total_json('dirnum') . '个;托管图片:' . read_total_json('filenum') . '张;占用:' . read_total_json('usage_space') . ';缓存周期:每小时。'; + ?> +
' . @getimagesize($imgUrl)[0] . 'x' . @getimagesize($imgUrl)[1] . 'px ' . getDistUsed(filesize(APP_ROOT . $re_img)) . '
+ if (is_online()) { + echo ' + + '; + } else { + echo ' + + '; + } + } + } + echo ''; + } else { + echo '
'; + } +} + +?> + + + + + +
| 检查名称 | +图床要求 | +检测结果 | +
|---|---|---|
| PHP | +PHP >= 5.6 | ++ |
| Fileinfo | +必须支持 | ++ |
| GD | +必须支持 | ++ |
| openssl | +建议支持(用于删除文件,PHP>7.0) | ++ |
| file.php | +0755可执行权限(非windows系统) | ++ |
| /i | +可写 | ++ |
diff --git a/libs/function.php b/application/function.php similarity index 61% rename from libs/function.php rename to application/function.php index 53ed100..7a783bc 100755 --- a/libs/function.php +++ b/application/function.php @@ -1,5 +1,17 @@ window.location.href="' . get_whole_url('/') . '/install/index.php"'; + exit; + } + global $config; if ($mode) { // 扩展检测 @@ -416,8 +435,7 @@ function checkEnv($mode) } } // 检测是否更改默认域名 - $url = preg_replace('#^(http(s?))?(://)#', '', 'http://192.168.2.100'); - if (strstr($url, $_SERVER['HTTP_HOST'])) { + if (strstr('localhost', $_SERVER['HTTP_HOST'])) { echo ' '; } - // 检查环境配置 + // 上部内容 if (!is_file(APP_ROOT . '/config/EasyIamge.lock')) { echo '
file.php 文件不可执行>
+
/i 目录可读写>
+ ';
+ } else {
+ echo '
+ file.php 文件可执行
+ /i 目录可读写
+ ';
+ }
}
echo '
@@ -552,7 +561,7 @@ function getVersion() global $config; if ($config['checkEnv']) { - require_once APP_ROOT . '/libs/class.version.php'; + require_once APP_ROOT . '/application/class.version.php'; // 获取版本地址 $url = "https://api.github.com/repositories/188228357/releases/latest"; $getVersion = new getVerson($url); @@ -603,9 +612,13 @@ function deldir($dir) // curl访问网站并返回解码过的json信息 function get_json($img) { - global $moderatecontent; + global $config; - $url = $moderatecontent['url'] . $moderatecontent['key'] . '&url=' . $img; + if (empty($config['moderatecontent_key'])) { + exit; + } + + $url = 'https://api.moderatecontent.com/moderate/?key=' . $config['moderatecontent_key'] . '&url=' . $img; $headerArray = array("Content-type:application/json;", "Accept:application/json"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); @@ -620,19 +633,19 @@ function get_json($img) return $output; } // 检查图片是否违规 -function checkImg($imageUrl, $mode = true) +function checkImg($imageUrl) { global $config; $response = get_json($imageUrl); if ($response['rating_index'] == 3 or $response['predictions']['adult'] > $config['checkImg_value']) { // (1 = everyone, 2 = teen, 3 = adult) - $old_path = APP_ROOT . parse_url($imageUrl)['path']; // 提交网址中的文件路径 /i/2021/10/29/p8vypd.png - //$name = date('Y_m_d').'_'.basename($imageUrl); // 文件名 p8vypd.png + //$old_path = APP_ROOT . parse_url($imageUrl)['path']; // 提交网址中的文件路径 /i/2021/10/29/p8vypd.png + $old_path = APP_ROOT . str_replace($config['imgurl'], '', $imageUrl);; // 提交网址中的文件路径 /i/2021/10/29/p8vypd.png $name = date('Y_m_d') . '_' . basename($imageUrl); // 文件名 2021_10_30_p8vypd.png - $new_path = APP_ROOT . $config['path'] . 'cache/' . $name; // 新路径含文件名 - $cache_dir = APP_ROOT . $config['path'] . 'cache/'; // cache路径 + $new_path = APP_ROOT . $config['path'] . 'suspic/' . $name; // 新路径含文件名 + $cache_dir = APP_ROOT . $config['path'] . 'suspic/'; // suspic路径 - if (is_dir($cache_dir)) { // 创建cache目录并移动 + if (is_dir($cache_dir)) { // 创建suspic目录并移动 rename($old_path, $new_path); } else { mkdir($cache_dir, 0777, true); @@ -646,8 +659,114 @@ function re_checkImg($name) { global $config; - $now_file = str_replace('_', '/', $name); // 当前图片相对位置 2021/10/30/p8vypd.png - $now_path_file = APP_ROOT . $config['path'] . 'cache/' . $name; // 当前图片绝对位置 */i/cache/2021_10_30_p8vypd.png - $to_file = APP_ROOT . $config['path'] . $now_file; // 还原图片的绝对位置 */i/2021/10/30/p8vypd.png + $fileToPath = str_replace('_', '/', $name); // 将图片名称还原为带路径的名称,eg:2021_11_03_pbmn1a.jpg =>2021/11/03/pbmn1a.jpg + $now_path_file = APP_ROOT . $config['path'] . 'suspic/' . $name; // 当前图片绝对位置 */i/suspic/2021_10_30_p8vypd.png + $to_file = APP_ROOT . $config['path'] . $fileToPath; // 要还原图片的绝对位置 */i/2021/10/30/p8vypd.png rename($now_path_file, $to_file); } +// 创建缩略图 +function creat_cache_images($imgName) +{ + require_once __DIR__ . '/class.thumb.php'; + global $config; + + $old_img_path = APP_ROOT . config_path() . $imgName; // 获取要创建缩略图文件的绝对路径 + $cache_path = APP_ROOT . $config['path'] . 'cache/'; // cache目录的绝对路径 + if (!isAnimatedGif($old_img_path)) { // 仅针对非gif创建图片缩略图 + if (is_dir($cache_path)) { + $new_imgName = APP_ROOT . $config['path'] . 'cache/' . date('Y_m_d') . '_' . $imgName; // 缩略图缓存的绝对路径 + Thumb::out($old_img_path, $new_imgName, 300, 300); // 保存缩略图 + } else { + mkdir($cache_path, 0777, true); // 创建cache目录 + } + } +} + +// 根据请求网址路径返回缩略图网址 +function back_cache_images($url) +{ + global $config; + $cache_image_file = str_replace($config['imgurl'], '', $url); + + if (isAnimatedGif(APP_ROOT . $cache_image_file)) { // 仅读取非gif的缩略图 + return $url; // 如果是gif则直接返回url + } else { + $cache_image_file = str_replace($config['path'], '', $cache_image_file); // 将网址中的/i/去除 + $cache_image_file = str_replace('/', '_', $cache_image_file); // 将文件的/转换为_ + $isFile = APP_ROOT . $config['path'] . 'cache/' . $cache_image_file; // 缓存文件的绝对路径 + if (file_exists($isFile)) { // 缓存文件是否存在 + return $config['imgurl'] . $config['path'] . 'cache/' . $cache_image_file; // 存在则返回缓存文件 + } else { + return $url; // 不存在直接返回url + } + } +} + +/** + * 获取当前页面完整URL地址 + * 返回 http://localhost/ww/index.php + * https://www.php.cn/php-weizijiaocheng-28181.html + * $search 返回指定搜索文字之前的内容(不含搜索文字) + */ + +function get_whole_url($search = null) +{ + $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; + $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME']; + $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); + $whole_domain = $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') . $relate_url; + if ($search) { + // 返回指定符号之前 + return substr($whole_domain, 0, strrpos($whole_domain, $search)); + } else { + return $whole_domain; + } +} + +//写入 +function cache_write($filename, $values, $var = 'config', $format = false) +{ + $cachefile = $filename; + $cachetext = " $val) { + $key = is_string($key) ? '\'' . addcslashes($key, '\'\\') . '\'' : $key; + $val = !is_array($val) && (!preg_match('/^\-?\d+$/', $val) || strlen($val) > 12) ? '\'' . addcslashes($val, '\'\\') . '\'' : $val; + if (is_array($val)) { + $evaluate .= $comma . $key . '=>' . arrayeval($val, $format, $level + 1); + } else { + $evaluate .= $comma . $key . '=>' . $val; + } + $comma = ',' . $line . $space; + } + $evaluate .= $line . $space . ')'; + return $evaluate; +} + +//写入文件 +function writefile($filename, $writetext, $openmod = 'w') +{ + if (false !== $fp = fopen($filename, $openmod)) { + flock($fp, 2); + fwrite($fp, $writetext); + fclose($fp); + return true; + } else { + return false; + } +} diff --git a/application/header.php b/application/header.php new file mode 100755 index 0000000..9bf08a4 --- /dev/null +++ b/application/header.php @@ -0,0 +1,80 @@ + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + +