pull/141/head
= 2022-02-22 04:11:25 +01:00
parent ece3262c13
commit 6192830822
11 changed files with 214 additions and 169 deletions

View File

@ -103,7 +103,13 @@ $HTTP["url"] =~ "^/(i|public)/" {
<details><summary><mark>点击查看2.0版更新日志</mark></summary>
* 2022-2-19 v2.5.2 Developing
* 2022-2-21 v2.5.3 Developing
- 增加自定义服务条款
- 升级 Viewer.js 到 v1.10.4
- 修复实时生成缩略图导致的页面布局异常
- 优化显示代码
* 2022-2-19 v2.5.2
- 增加简繁体转换
- 增加管理页面记录当前操作页
- 修复一处暴露路径bug

View File

@ -177,12 +177,16 @@ if (isset($_GET['reimg'])) {
<textarea class="form-control" rows="3" name="tips"><?php echo $config['tips']; ?></textarea>
</div>
<div class="form-group">
<label data-toggle="tooltip" title="统计代码/JS/CSS | 代码需要闭合标签">页首信息 | 支持html</label>
<textarea class="form-control" rows="3" name="customize"><?php echo $config['customize']; ?></textarea>
<label data-toggle="tooltip" title="HTML / 统计代码 / JS / CSS">页首代码 | 需闭合标签</label>
<textarea class="form-control" rows="2" name="customize"><?php echo $config['customize']; ?></textarea>
</div>
<div class="form-group">
<label data-toggle="tooltip" title="统计代码/JS/CSS | 代码需要闭合标签">页脚信息 | 支持htm</label>
<textarea class="form-control" rows="7" name="footer"><?php echo $config['footer']; ?></textarea>
<label data-toggle="tooltip" title="HTML / 统计代码 / JS / CSS">页脚代码 | 需闭合标签</label>
<textarea class="form-control" rows="2" name="footer"><?php echo $config['footer']; ?></textarea>
</div>
<div class="form-group">
<label data-toggle="tooltip" title="服务条款 / 隐私政策 / DMCA">使用条款| 支持HTML</label>
<textarea class="form-control" rows="2" name="terms"><?php echo $config['terms']; ?></textarea>
</div>
<div class="form-group">
<div class="switch switch-inline">
@ -190,7 +194,7 @@ if (isset($_GET['reimg'])) {
<input type="checkbox" name="static_cdn" value="1" <?php if ($config['static_cdn']) echo 'checked="checked"'; ?>>
<label style="font-weight: bold">静态文件CDN | 末尾不加'/'</label>
</div>
<input type="url" class="form-control" name="static_cdn_url" value="<?php echo $config['static_cdn_url']; ?>" onkeyup="this.value=this.value.replace(/\s/g,'')" data-toggle="tooltip" title="jsdelivr可添加当前版本号 例:@2.5.1">
<input type="url" class="form-control" name="static_cdn_url" value="<?php echo $config['static_cdn_url']; ?>" onkeyup="this.value=this.value.replace(/\s/g,'')" data-toggle="tooltip" title="jsdelivr可添加当前版本号 例:@2.5.6">
</div>
<div class="form-group">
<div>
@ -203,7 +207,7 @@ if (isset($_GET['reimg'])) {
<input type="radio" name="thumbnail" value="1" <?php if ($config['thumbnail'] === 1) echo 'checked="checked"'; ?> id="thumbnail1"><label for="thumbnail1" data-toggle="tooltip" title="利用TimThumb生成 | 优点: 带缓存周期 缺点:无法生成webp动图,无法被cdn缓存"> 实时生成 | 推荐</label>
</div>
<div class="radio-primary">
<input type="radio" name="thumbnail" value="2" <?php if ($config['thumbnail'] === 2) echo 'checked="checked"'; ?> id="thumbnail2"><label for="thumbnail2" data-toggle="tooltip" title="优点: 缩略图直链 | 缺点: 无缓存周期, 每日首张缩略图会使广场页面代码布局异常 [ 刷新即可 ]"> 实时生成 | 缩略图直链</label>
<input type="radio" name="thumbnail" value="2" <?php if ($config['thumbnail'] === 2) echo 'checked="checked"'; ?> id="thumbnail2"><label for="thumbnail2" data-toggle="tooltip" title="优点: 缩略图直链 | 缺点: 每日首次访问需要刷新"> 实时生成 | 缩略图直链</label>
</div>
</div>
<div class="form-group">

View File

@ -1,96 +1,20 @@
<?php
/*
* 登录页面
* 使用条款页面
*/
require_once __DIR__ . '/../application/function.php';
require_once APP_ROOT . '/application/header.php';
?>
<div class="container">
<div class="row">
<div class="col-xs-3">
<ul class="nav nav-tabs nav-stacked">
<li class="active">
<a href="#Terms" data-target="#tab3Content1" data-toggle="tab">服务条款</a>
</li>
<li>
<a href="#Privacy" data-target="#tab3Content2" data-toggle="tab">隐私政策</a>
</li>
<li>
<a href="#DMCA" data-target="#tab3Content3" data-toggle="tab">DMCA</a>
</li>
</ul>
</div>
<div class="col-xs-9">
<div class="tab-content col-xs-9">
<div class="tab-pane fade active in" id="tab3Content1">
<h4>服务条款</h4>
<hr>
<p>访问我们网站除主页和本“条款”页面以外的任何页面,即表示您同意这些使用条款和我们的隐私政策。如果您不同意,请不要使用我们的网站。</p>
<ol>
<li>您使用我们的网站进行除简单访问/查看之外的任何事情(即上传、下载、评论等),不仅构成您的同意,而且构成您的电子签名,这意味着您受这些条款的合同约束,并且通过我们的隐私政策。</li>
<li>我们保留在使用过多带宽或以其他方式滥用系统的用户帐户上禁用直接链接的权利。
<li>请勿上传儿童色情内容或威胁、骚扰、诽谤或鼓励非法行为的材料。不要使用本网站作为内容交付网络。如果你这样做(我们将成为法官),或者如果你做了任何违法的事情,除了我们可能拥有的任何其他合法权利之外,我们将禁止你以及你从中盗链的网站,删除你的所有图片,报告如有必要,您可以向当局报告,并阻止您查看本网站上托管的任何图像。我们是认真的。</li>
<li>用户必须同意遵守适用于其所在地的所有法律,包括版权和商标法。不允许使用侵犯版权或商标的图片。如果有人对您提出侵权索赔,您将被要求删除受版权保护的文件,直到问题得到解决。如果本网站的参与者之间存在争议,我们没有义务参与其中。</li>
<li>您可以匿名上传图像,并与您的朋友、家人、在线站点以及社交网络在线共享。</li>
<li>如果您在我们的网站上看到任何不应该出现的内容,因为它违反了我们的政策或出于任何其他原因,请通过电子邮件联系告知我们</li>
<li>声明通知中的信息准确无误,否则会受到伪证处罚。为此,请包括以下声明: “我发誓,通知中的信息准确无误,并且我是(版权)所有者或被授权代表专有权的所有者行事,在作伪证的处罚下涉嫌侵权”。</li>
</ol>
<p>如果发生调查,本网站承诺与任何和所有法律机构合作。</p>
</div>
<div class="tab-pane fade" id="tab3Content2">
<h4>隐私政策</h4>
<hr>
<h4>一般: </h4>
<p>当您访问本网站或使用本政策中进一步概述的服务(“服务”),本网站致力于保护您的隐私。作为使用本网站服务的条件,您同意向本网站提供某些个人信息。该信息包括但不限于: 电子邮件地址和您计算机的唯一 IP 地址(如果有)、财务信息(您的 Paypal 帐户使用的电子邮件地址)和人口统计信息(例如,邮政编码、邮政编码、家乡、性别、购买历史信息和年龄以及不是您计算机独有的 IP 地址)。请注意,我们不会在本网站的任何地方故意收集 13 岁以下儿童的联系信息或财务信息。请定期查看本隐私政策,因为我们可能会不时对其进行更新。本隐私政策的最后修订日期为 2021年10月25日。您每次访问本网站、使用服务或向我们提供信息时,即表示您当时接受本隐私政策中描述的做法。您同意,通过使用本网站,您明确并肯定地同意我们使用和披露您提供的信息,并同意接收电子邮件,如下面的隐私政策所述。</p>
<h4>隐私政策变更: </h4>
<p>随着新功能添加到网站或我们纳入用户的建议,本政策可能会随着时间的推移进行修订。如果我们打算以与我们收集信息时声明的方式大不相同的方式使用或披露您的个人身份信息,您将可以选择我们是否以这种新方式使用或披露您的信息。我们还将在我们的网站显着位置发布隐私政策已修订的通知,以便您可以随时查看我们收集的信息、我们将如何使用该信息以及在何种条件下我们将向任何人披露这些信息。</p>
<h4>如何使用您的信息: </h4>
<p>我们使用联系信息(即您的电子邮件地址)来帮助我们有效地执行帐户任务(更改密码、找回丢失的密码)、提供您请求的服务、执行质量保证、销售分析和其他业务分析,并就相关事宜与您联系与您向我们下的任何订单。除非满足任何法律、法规、政府要求或司法命令,否则不会将您的财务信息用于其他用途。当您通过本网站进行购买或在本网站注册时,您将向我们提供一个电子邮件地址,我们或这些服务提供商可能会出于本段所述目的与您联系。</p>
<h4>联系您获取优惠和促销信息: </h4>
<p>您同意,考虑到我们提供的服务的使用,允许我们使用您的个人信息向您发送营销和促销材料。我们也可能向您发送宣传第三方产品的营销和宣传材料。我们不会出租或出售您的个人信息以供第三方使用。这些材料可能包括但不限于: 向您提供有关如何使用服务的附加信息的时事通讯,以及来自我们或第三方的商品和服务的促销优惠。</p>
<h4>人口统计信息的使用: </h4>
<p>我们可能会使用您的人口统计信息进行业务分析或根据您的兴趣定制网站和通讯。我们可能会与广告商和其他第三方共享匿名的汇总人口统计信息,以便他们可以针对适当的受众定制广告和通信。在本隐私政策允许我们共享您的联系信息或财务信息的任何时候,我们也可能会同时共享您的人口统计信息。</p>
<h4>向政府实体披露: </h4>
<p>当我们确定此类披露是遵守法律、与执法部门合作或寻求执法协助或保护我们或网站其他访问者或用户的利益或安全时,我们可能会披露特定的联系信息。服务。此外,如果我们发生合并、收购、合并、剥离或破产,您的联系信息可能会传递给第三方。</p>
<h4>Cookie 和其他网站跟踪数据的使用: </h4>
<p>Cookies : “cookie”是我们保存在您计算机硬盘上的包含非个人信息的小文件。这些 cookie 有助于让您更快地访问您已经访问过的页面。它们还允许您个性化您的页面,并优化您在我们网站上的体验。我们还使用 cookie 来帮助我们了解有多少人访问了我们的网站、他们访问了我们的哪些网页以及他们在那里停留的时间。此信息可帮助我们确定我们的哪些网络功能非常成功以及哪些网站可能需要改进。您可以通过在浏览器的首选项或选项菜单中指明这一点来禁用计算机上的 cookie。大多数浏览器会自动接受 cookie,但允许您禁用它们。禁用 cookie 可能会阻止您正确使用服务或访问网站。</p>
<h4>会话 ID: </h4>
<p>“会话 ID”允许我们在多个网页请求中识别特定用户。此会话 ID 会尽可能保存在您的 cookie 文件中。如果 cookie 未启用,或者如果用户的 Internet 浏览器程序不支持 cookie,则我们将在请求的网页中放置会话 ID。这使最终用户不必为每个网页请求不断地重新输入某些信息,例如帐户名和密码。每当用户关闭其 Internet 浏览器时,此会话 ID 就会过期。</p>
<h4>网站跟踪、报告: </h4>
<p>我们的许多网页还包含特殊的电子图像(称为“单像素 gif”或“gif”),使我们能够仅收集非个人身份的流量统计数据和有关我们网站访问者的其他汇总信息。IMX.to(通过自身或第三方)使用此技术收集和积累匿名数据,帮助我们了解和分析访问我们网站的人的体验,并连同您提供的其他信息,定制您未来的访问并改进我们的网站网站。例如,我们捕获有关所用浏览器类型、操作系统软件(例如 Windows 95 98 Macintosh)、cookie 偏好(用户是否打开或关闭它们)和搜索引擎关键字(哪些关键字做了什么)的数据。访问者用于访问我们的网站)。我们还记录了访问次数,所采取的路径,以及在我们网站内的站点和页面上花费的时间。请记住,这些信息都不是个人身份信息,我们只将这些信息分发给我们的内部员工以及与我们签署了保密协议的合作伙伴。我们与合作伙伴共享的任何信息都反映了整个网站或 Internet 使用趋势,而不是个别信息。</p>
<h4>IP地址: </h4>
<p>每次您访问本网站时,我们都会自动收集您的 IP 地址和您来自的网页。为了为您管理和优化站点并诊断我们站点的问题,我们使用您的 IP 地址来帮助识别您的身份并收集有关您的广泛人口统计信息。</p>
<h4>来自其他网站的信息: </h4>
<p>我们可能会放置指向其他方运营的其他网站的链接,并且可能会不时在我们的促销电子邮件中包含指向第三方网站的信息和链接。其中一些其他网站包含我们的品牌名称和商标以及我们拥有的其他知识产权;其他人没有。当您点击这些链接并访问这些其他网站时,无论它们是否包含我们的品牌名称、商标和其他知识产权,您都需要注意,我们不控制这些其他网站或这些其他网站”商业惯例,并且本隐私政策不适用于这些其他网站。因此,这些其他网站的运营商可能会收集有关您的不同类型的信息,并且可能以不同于我们在网站上收集信息的方式使用和披露该信息。我们鼓励您查看他们的隐私政策,并提醒您我们不对他们的行为负责。</p>
<h4>信息存储: </h4>
<p>您理解并同意我们在服务器上存储和处理您的信息,并且通过向我们提供任何数据,您同意将此类信息传输到网站服务器。当您从我们帐户中删除文件时,您与该文件之间将不再存在任何链接。删除的文件可能会缓存在我们服务器中以节省带宽,以防其他人请求它们。</p>
<h4>如何联系我们: </h4>
<p>如果您对您提交给我们这个隐私政策或信息有任何疑问,您可以通过邮件方式联系我们</p>
</div>
<div class="tab-pane fade" id="tab3Content3">
<h4>数字千年版权法案</h4>
<hr>
<p>要向我们提交版权侵权通知,您需要发送书面通知,其中包含《数字千年版权法》第 512(c)(3) 条要求和规定的信息。</p>
<p>要撰写适当的 DMCA 通知,请说明以下信息: </p>
<ol>
<li>表明自己是您认为受到侵犯的版权作品或专有权的所有者,或代表此类所有者行事的人,并提供物理签名(纸质形式时)或电子签名(电子形式时) )</li>
<li>指明您认为受到侵权的受版权保护的作品,或者如果有大量作品受到侵权,请提供作品的代表性清单。</li>
<li>通过在我们站点上提供包含这些材料的 Web URL,确定侵犯您的版权作品的材料的位置。请不要发送附加的图像、pdf 或其他文件格式的文件,而只能发送包含我们网址的列表。在信函正文中提供所有 URL 是帮助我们快速处理您的请求的最佳方式。</li>
<li>说明您的联系信息,包括您的姓名、街道地址、电话号码和电子邮件地址。如果您代表版权所有者行事,请同时说明您与版权所有者的关系(例如律师、供应商、代理人)</li>
<li>声明您“真诚地相信上述材料的使用未经版权所有者、其代理人或法律授权”。</li>
<li>声明通知中的信息准确无误,否则会受到伪证处罚。为此,请包括以下声明: “我发誓,通知中的信息准确无误,并且我是(版权)所有者或被授权代表专有权的所有者行事,在作伪证的处罚下涉嫌侵权”。</li>
<li>请用中文书写,所有电子邮件是任何其他语言都将被忽略。</li>
<li>要行使您的 DMCA 权利,您必须将适当的 DMCA 通知发送至我们的指定代理至电子邮件。</li>
</ol>
<p>未能包含上述所有信息可能会导致 DMCA 通知的处理延迟。请注意,根据 DMCA 512(f) ,任何故意歪曲材料或活动侵权的人都可能需要承担责任。</p>
<p>如果我们收到声称侵犯版权的适当通知,它将通过删除或禁止访问声称侵权或成为侵权活动主题的材料迅速做出回应。请注意,我们不一定会向报告者发送有关删除操作的确认。</p>
</div>
</div>
</div>
</div>
</div>
require_once __DIR__ . '/../application/header.php';
if (empty($config['terms'])) {
echo '<div class="alert alert-danger">Terms not set!<br />使用条款未设置</div>';
} else {
echo $config['terms'];
}
echo "
<script>
// Title
document.title = "服务条款 - <?php echo $config['title']; ?>";
document.title = '使用条款 - " . $config['title'] . "';
</script>
<?php require_once APP_ROOT . '/application/footer.php';
";
require_once __DIR__ . '/../application/footer.php';

View File

@ -2,7 +2,8 @@
defined('APP_ROOT') ?: exit; // 禁止访问
if ($config['ad_bot']) echo $config['ad_bot_info']; // 底部广告
?>
<footer class="text-muted small col-md-12" style="text-align: center;">
<footer class="col-md-12 text-muted small" style="text-align: center;">
<hr>
<!-- 对话框HTML -->
<div class="modal fade" id="myModal">
@ -70,6 +71,7 @@ if ($config['ad_bot']) echo $config['ad_bot_info']; // 底部广告
console.log("%cEasyImage2.0", "background: rgba(252,234,187,1);background: -moz-linear-gradient(left, rgba(252,234,187,1) 0%, rgba(175,250,77,1) 12%, rgba(0,247,49,1) 28%, rgba(0,210,247,1) 39%,rgba(0,189,247,1) 51%, rgba(133,108,217,1) 64%, rgba(177,0,247,1) 78%, rgba(247,0,189,1) 87%, rgba(245,22,52,1) 100%);background: -webkit-gradient(left top, right top, color-stop(0%, rgba(252,234,187,1)), color-stop(12%, rgba(175,250,77,1)), color-stop(28%, rgba(0,247,49,1)), color-stop(39%, rgba(0,210,247,1)), color-stop(51%, rgba(0,189,247,1)), color-stop(64%, rgba(133,108,217,1)), color-stop(78%, rgba(177,0,247,1)), color-stop(87%, rgba(247,0,189,1)), color-stop(100%, rgba(245,22,52,1)));background: -webkit-linear-gradient(left, rgba(252,234,187,1) 0%, rgba(175,250,77,1) 12%, rgba(0,247,49,1) 28%, rgba(0,210,247,1) 39%, rgba(0,189,247,1) 51%, rgba(133,108,217,1) 64%, rgba(177,0,247,1) 78%, rgba(247,0,189,1) 87%, rgba(245,22,52,1) 100%);background: -o-linear-gradient(left, rgba(252,234,187,1) 0%, rgba(175,250,77,1) 12%, rgba(0,247,49,1) 28%, rgba(0,210,247,1) 39%, rgba(0,189,247,1) 51%, rgba(133,108,217,1) 64%, rgba(177,0,247,1) 78%, rgba(247,0,189,1) 87%, rgba(245,22,52,1) 100%);background: -ms-linear-gradient(left, rgba(252,234,187,1) 0%, rgba(175,250,77,1) 12%, rgba(0,247,49,1) 28%, rgba(0,210,247,1) 39%, rgba(0,189,247,1) 51%, rgba(133,108,217,1) 64%, rgba(177,0,247,1) 78%, rgba(247,0,189,1) 87%, rgba(245,22,52,1) 100%);background: linear-gradient(to right, rgba(252,234,187,1) 0%, rgba(175,250,77,1) 12%, rgba(0,247,49,1) 28%, rgba(0,210,247,1) 39%, rgba(0,189,247,1) 51%, rgba(133,108,217,1) 64%, rgba(177,0,247,1) 78%, rgba(247,0,189,1) 87%, rgba(245,22,52,1) 100%);filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fceabb', endColorstr='#f51634', GradientType=1 );font-size:2.34em;font-weight:bold")
console.log('%c图床演示网站: https://png.cm \n请为本人博客 https://blog.png.cm/ 加上链接, 谢谢尊重!\n作为开发者你可以对相应的后台功能进行扩展(增删改相应代码), 但请保留代码中相关来源信息(例如: 本人博客, 邮箱等);\n本程序由 Icret 独自开发并完全开源, 碰到收费发布的请不要轻易付款; 本人仅为程序开源创作, 如非法网站使用与本人无关, 请勿用于非法用途.%c ', 'color: #eaad1a; padding:5px 0; border:1px solid #448ef6; font-size:12px;', '');
</script>
<!-- <div class="navbar navbar-default" style="margin-bottom:0px;margin-left:0px;margin-right:0px;clear:both;">Navbar Code</div> -->
</body>
</html>

View File

@ -40,7 +40,7 @@
<li><a href="<?php echo $config['domain']; ?>"><i class="icon icon-home"></i> 首页</a></li>
<?php // 关闭广场非登录状态不显示广场导航
if ($config['showSwitch'] || is_who_login('admin')) echo '
<li><a href="' . $config['domain'] . '/application/list.php"><i class="icon icon-th"></i> 广场<span class="label label-badge label-success">' . get_file_by_glob(APP_ROOT . config_path(), 'number') . '</span></a></li>';
<li><a href="' . $config['domain'] . '/application/list.php"><i class="icon icon-th"></i> 广场<span class="label label-badge label-primary">' . get_file_by_glob(APP_ROOT . config_path(), 'number') . '</span></a></li>';
// 登陆状态显示设置页面
if (is_who_login('admin')) {
echo '

View File

@ -1,55 +1,10 @@
<?php
require_once __DIR__ . '/header.php';
<?php require_once __DIR__ . '/header.php'; ?>
echo '<div class="col-md-12">';
if (!$config['showSwitch'] && !is_who_login('admin')) {
echo '<div class="alert alert-info">管理员关闭了预览哦~~</div>';
} else {
$path = isset($_GET['date']) ? $_GET['date'] : date('Y/m/d/'); // 获取指定目录
$path = preg_replace("/^d{4}-d{2}-d{2} d{2}:d{2}:d{2}$/s", "", trim($path)); // 过滤非日期,删除空格
$keyNum = isset($_GET['num']) ? $_GET['num'] : $config['listNumber']; // 获取指定浏览数量
$keyNum = preg_replace("/[\W]/", "", trim($keyNum)); // 过滤非数字,删除空格
// $fileArr = getFile(APP_ROOT . config_path($path)); // 获取当日上传列表
$fileType = isset($_GET['search']) ? '*.' . preg_replace("/[\W]/", "", $_GET['search']) : '*.*'; // 按照图片格式
$fileArr = get_file_by_glob(APP_ROOT . config_path($path) . $fileType, 'list'); // 获取当日上传列表
echo '
<ul id="dowebok">
<div class="cards listNum">';
if ($fileArr[0]) {
foreach ($fileArr as $key => $value) {
if ($key < $keyNum) {
$imgUrl = $config['imgurl'] . config_path($path) . $value;
echo '
<div class="col-md-4 col-sm-6 col-lg-3">
<div class="card">
<li><img data-image="' . creat_thumbnail_by_list($imgUrl) . '" src="../public/images/loading.svg" data-original="' . $imgUrl . '" alt="简单图床-EasyImage"></li>
<div class="bottom">
<a href="' . $imgUrl . '" target="_blank"><i class="icon icon-picture" data-toggle="tooltip" title="原图" style="margin-left:10px;"></i></a>
<a href="#" class="copy" data-clipboard-text="' . $imgUrl . '" data-toggle="tooltip" title="复制" style="margin-left:10px;"><i class="icon icon-copy"></i></a>
<a href="/application/info.php?img=' . $imgUrl . '" data-toggle="tooltip" title="详细信息" target="_blank" style="margin-left:10px;"><i class="icon icon-info-sign"></i></a>
<a href="' . $config['domain'] . '/application/del.php?url=' . $imgUrl . '" target="_blank" data-toggle="tooltip" title="删除" style="margin-left:10px;"><i class="icon icon-trash"></i></a>
<label style="margin-left:10px;" class="text-primary"><input type="checkbox" style="margin: left 200px;" id="url" name="checkbox" value="' . $imgUrl . '"> 选择</label>
</div>
</div>
</div>
';
}
}
echo '</div>';
} else {
echo '<div class="alert alert-danger">今天还没有上传的图片哟~~ <br />快来上传第一张吧~!</div>';
}
echo '</ul>';
}
// 当前日期全部上传
$allUploud = isset($_GET['date']) ? $_GET['date'] : date('Y/m/d/');
$allUploud = get_file_by_glob(APP_ROOT . $config['path'] . $allUploud, 'number');
// 组合url
@$httpUrl = array('date' => $path, 'num' => getFileNumber(APP_ROOT . config_path($path)));
?>
</div>
<link rel="stylesheet" href="<?php static_cdn(); ?>/public/static/viewjs/viewer.min.css">
<link rel="stylesheet" href="<?php static_cdn(); ?>/public/static/zui/lib/datetimepicker/datetimepicker.min.css">
<style>
/** 图片列表*/
@media screen and (min-width:960px) {
.listNum img {
width: 258px;
@ -64,15 +19,6 @@ $allUploud = get_file_by_glob(APP_ROOT . $config['path'] . $allUploud, 'number')
}
}
.card .bottom {
width: 100%;
position: absolute;
left: 0;
bottom: 0px;
background-color: rgba(0, 0, 0, 0.5);
color: white;
}
/** 返回顶部*/
* {
list-style: none;
@ -119,9 +65,86 @@ $allUploud = get_file_by_glob(APP_ROOT . $config['path'] . $allUploud, 'number')
width: 110px;
z-index: 11;
}
.cards {
padding-top: 0px;
padding-bottom: 0px;
margin-right: 0px;
margin-left: 0px;
}
.card {
box-shadow: rgba(0, 0, 0, 0.45) 0px 25px 20px -20px;
border-radius: 10px;
}
img {
cursor: pointer;
transition: all 0.6s;
}
img:hover {
transform: scale(1.5);
position: relative;
z-index: 100;
}
.bottom-bar {
width: 100%;
position: absolute;
left: 0;
bottom: 0px;
background-color: rgba(0, 0, 0, 0.5);
}
</style>
<link rel="stylesheet" href="<?php static_cdn(); ?>/public/static/viewjs/viewer.min.css">
<link rel="stylesheet" href="<?php static_cdn(); ?>/public/static/zui/lib/datetimepicker/datetimepicker.min.css">
<div class="col-md-12">
<?php
if (!$config['showSwitch'] && !is_who_login('admin')) {
echo '<div class="alert alert-info">管理员关闭了预览哦~~</div>';
} else {
$path = isset($_GET['date']) ? $_GET['date'] : date('Y/m/d/'); // 获取指定目录
$path = preg_replace("/^d{4}-d{2}-d{2} d{2}:d{2}:d{2}$/s", "", trim($path)); // 过滤非日期,删除空格
$keyNum = isset($_GET['num']) ? $_GET['num'] : $config['listNumber']; // 获取指定浏览数量
$keyNum = preg_replace("/[\W]/", "", trim($keyNum)); // 过滤非数字,删除空格
// $fileArr = getFile(APP_ROOT . config_path($path)); // 获取当日上传列表
$fileType = isset($_GET['search']) ? '*.' . preg_replace("/[\W]/", "", $_GET['search']) : '*.*'; // 按照图片格式
$fileArr = get_file_by_glob(APP_ROOT . config_path($path) . $fileType, 'list'); // 获取当日上传列表
echo '
<ul id="viewjs">
<div class="cards listNum">';
if ($fileArr[0]) {
foreach ($fileArr as $key => $value) {
if ($key < $keyNum) {
$imgUrl = $config['imgurl'] . config_path($path) . $value;
echo '
<div class="col-md-4 col-sm-6 col-lg-3">
<div class="card">
<li><img src="../public/images/loading.svg" data-image="' . creat_thumbnail_by_list($imgUrl) . '" data-original="' . $imgUrl . '" alt="简单图床-EasyImage"></li>
<div class="bottom-bar">
<a href="' . $imgUrl . '" target="_blank"><i class="icon icon-picture" data-toggle="tooltip" title="原图" style="margin-left:10px;"></i></a>
<a href="#" class="copy" data-clipboard-text="' . $imgUrl . '" data-toggle="tooltip" title="复制" style="margin-left:10px;"><i class="icon icon-copy"></i></a>
<a href="/application/info.php?img=' . $imgUrl . '" data-toggle="tooltip" title="详细信息" target="_blank" style="margin-left:10px;"><i class="icon icon-info-sign"></i></a>
<a href="' . $config['domain'] . '/application/del.php?url=' . $imgUrl . '" target="_blank" data-toggle="tooltip" title="删除" style="margin-left:10px;"><i class="icon icon-trash"></i></a>
<label style="margin-left:10px;" class="text-primary"><input type="checkbox" style="margin: left 200px;" id="url" name="checkbox" value="' . $imgUrl . '"> 选择</label>
</div>
</div>
</div>
';
}
}
echo '</div>';
} else {
echo '<div class="alert alert-danger">今天还没有上传的图片哟~~ <br />快来上传第一张吧~!</div>';
}
echo '</ul>';
}
// 当前日期全部上传
$allUploud = isset($_GET['date']) ? $_GET['date'] : date('Y/m/d/');
$allUploud = get_file_by_glob(APP_ROOT . $config['path'] . $allUploud, 'number');
// 组合url
@$httpUrl = array('date' => $path, 'num' => getFileNumber(APP_ROOT . config_path($path)));
?>
</div>
<div class="col-md-12">
<hr />
<div class="col-md-8 col-xs-12" style="padding-bottom:5px">
@ -199,9 +222,8 @@ $allUploud = get_file_by_glob(APP_ROOT . $config['path'] . $allUploud, 'number')
});
// viewjs
var viewer = new Viewer(document.getElementById('dowebok'), {
new Viewer(document.getElementById('viewjs'), {
url: 'data-original',
backdrop: true
});
// 复制url

View File

@ -82,6 +82,90 @@ var _hmt = _hmt || [];
'check_ip_model'=>0,
'check_ip_list'=>'',
'language'=>0,
'version'=>'2.5.2',
'update'=>'2022-02-19 23:14:32'
'version'=>'2.5.3',
'update'=>'2022-02-22 03:37:40',
'terms'=>'<div class="container">
<div class="row">
<div class="col-xs-3">
<ul class="nav nav-tabs nav-stacked">
<li class="active">
<a href="#Terms" data-target="#tab3Content1" data-toggle="tab">服务条款</a>
</li>
<li>
<a href="#Privacy" data-target="#tab3Content2" data-toggle="tab">隐私政策</a>
</li>
<li>
<a href="#DMCA" data-target="#tab3Content3" data-toggle="tab">DMCA</a>
</li>
</ul>
</div>
<div class="col-xs-9">
<div class="tab-content col-xs-9">
<div class="tab-pane fade active in" id="tab3Content1">
<h4>服务条款</h4>
<hr>
<p>访问我们网站除主页和本“条款”页面以外的任何页面,即表示您同意这些使用条款和我们的隐私政策。如果您不同意,请不要使用我们的网站。</p>
<ol>
<li>您使用我们的网站进行除简单访问/查看之外的任何事情(即上传、下载、评论等),不仅构成您的同意,而且构成您的电子签名,这意味着您受这些条款的合同约束,并且通过我们的隐私政策。</li>
<li>我们保留在使用过多带宽或以其他方式滥用系统的用户帐户上禁用直接链接的权利。
<li>请勿上传儿童色情内容或威胁、骚扰、诽谤或鼓励非法行为的材料。不要使用本网站作为内容交付网络。如果你这样做(我们将成为法官),或者如果你做了任何违法的事情,除了我们可能拥有的任何其他合法权利之外,我们将禁止你以及你从中盗链的网站,删除你的所有图片,报告如有必要,您可以向当局报告,并阻止您查看本网站上托管的任何图像。我们是认真的。</li>
<li>用户必须同意遵守适用于其所在地的所有法律,包括版权和商标法。不允许使用侵犯版权或商标的图片。如果有人对您提出侵权索赔,您将被要求删除受版权保护的文件,直到问题得到解决。如果本网站的参与者之间存在争议,我们没有义务参与其中。</li>
<li>您可以匿名上传图像,并与您的朋友、家人、在线站点以及社交网络在线共享。</li>
<li>如果您在我们的网站上看到任何不应该出现的内容,因为它违反了我们的政策或出于任何其他原因,请通过电子邮件联系告知我们</li>
<li>声明通知中的信息准确无误,否则会受到伪证处罚。为此,请包括以下声明: “我发誓,通知中的信息准确无误,并且我是(版权)所有者或被授权代表专有权的所有者行事,在作伪证的处罚下涉嫌侵权”。</li>
</ol>
<p>如果发生调查,本网站承诺与任何和所有法律机构合作。</p>
</div>
<div class="tab-pane fade" id="tab3Content2">
<h4>隐私政策</h4>
<hr>
<h4>一般: </h4>
<p>当您访问本网站或使用本政策中进一步概述的服务(“服务”),本网站致力于保护您的隐私。作为使用本网站服务的条件,您同意向本网站提供某些个人信息。该信息包括但不限于: 电子邮件地址和您计算机的唯一 IP 地址(如果有)、财务信息(您的 Paypal 帐户使用的电子邮件地址)和人口统计信息(例如,邮政编码、邮政编码、家乡、性别、购买历史信息和年龄以及不是您计算机独有的 IP 地址)。请注意,我们不会在本网站的任何地方故意收集 13 岁以下儿童的联系信息或财务信息。请定期查看本隐私政策,因为我们可能会不时对其进行更新。本隐私政策的最后修订日期为 2021年10月25日。您每次访问本网站、使用服务或向我们提供信息时,即表示您当时接受本隐私政策中描述的做法。您同意,通过使用本网站,您明确并肯定地同意我们使用和披露您提供的信息,并同意接收电子邮件,如下面的隐私政策所述。</p>
<h4>隐私政策变更: </h4>
<p>随着新功能添加到网站或我们纳入用户的建议,本政策可能会随着时间的推移进行修订。如果我们打算以与我们收集信息时声明的方式大不相同的方式使用或披露您的个人身份信息,您将可以选择我们是否以这种新方式使用或披露您的信息。我们还将在我们的网站显着位置发布隐私政策已修订的通知,以便您可以随时查看我们收集的信息、我们将如何使用该信息以及在何种条件下我们将向任何人披露这些信息。</p>
<h4>如何使用您的信息: </h4>
<p>我们使用联系信息(即您的电子邮件地址)来帮助我们有效地执行帐户任务(更改密码、找回丢失的密码)、提供您请求的服务、执行质量保证、销售分析和其他业务分析,并就相关事宜与您联系与您向我们下的任何订单。除非满足任何法律、法规、政府要求或司法命令,否则不会将您的财务信息用于其他用途。当您通过本网站进行购买或在本网站注册时,您将向我们提供一个电子邮件地址,我们或这些服务提供商可能会出于本段所述目的与您联系。</p>
<h4>联系您获取优惠和促销信息: </h4>
<p>您同意,考虑到我们提供的服务的使用,允许我们使用您的个人信息向您发送营销和促销材料。我们也可能向您发送宣传第三方产品的营销和宣传材料。我们不会出租或出售您的个人信息以供第三方使用。这些材料可能包括但不限于: 向您提供有关如何使用服务的附加信息的时事通讯,以及来自我们或第三方的商品和服务的促销优惠。</p>
<h4>人口统计信息的使用: </h4>
<p>我们可能会使用您的人口统计信息进行业务分析或根据您的兴趣定制网站和通讯。我们可能会与广告商和其他第三方共享匿名的汇总人口统计信息,以便他们可以针对适当的受众定制广告和通信。在本隐私政策允许我们共享您的联系信息或财务信息的任何时候,我们也可能会同时共享您的人口统计信息。</p>
<h4>向政府实体披露: </h4>
<p>当我们确定此类披露是遵守法律、与执法部门合作或寻求执法协助或保护我们或网站其他访问者或用户的利益或安全时,我们可能会披露特定的联系信息。服务。此外,如果我们发生合并、收购、合并、剥离或破产,您的联系信息可能会传递给第三方。</p>
<h4>Cookie 和其他网站跟踪数据的使用: </h4>
<p>Cookies : “cookie”是我们保存在您计算机硬盘上的包含非个人信息的小文件。这些 cookie 有助于让您更快地访问您已经访问过的页面。它们还允许您个性化您的页面,并优化您在我们网站上的体验。我们还使用 cookie 来帮助我们了解有多少人访问了我们的网站、他们访问了我们的哪些网页以及他们在那里停留的时间。此信息可帮助我们确定我们的哪些网络功能非常成功以及哪些网站可能需要改进。您可以通过在浏览器的首选项或选项菜单中指明这一点来禁用计算机上的 cookie。大多数浏览器会自动接受 cookie,但允许您禁用它们。禁用 cookie 可能会阻止您正确使用服务或访问网站。</p>
<h4>会话 ID: </h4>
<p>“会话 ID”允许我们在多个网页请求中识别特定用户。此会话 ID 会尽可能保存在您的 cookie 文件中。如果 cookie 未启用,或者如果用户的 Internet 浏览器程序不支持 cookie,则我们将在请求的网页中放置会话 ID。这使最终用户不必为每个网页请求不断地重新输入某些信息,例如帐户名和密码。每当用户关闭其 Internet 浏览器时,此会话 ID 就会过期。</p>
<h4>网站跟踪、报告: </h4>
<p>我们的许多网页还包含特殊的电子图像(称为“单像素 gif”或“gif”),使我们能够仅收集非个人身份的流量统计数据和有关我们网站访问者的其他汇总信息。IMX.to(通过自身或第三方)使用此技术收集和积累匿名数据,帮助我们了解和分析访问我们网站的人的体验,并连同您提供的其他信息,定制您未来的访问并改进我们的网站网站。例如,我们捕获有关所用浏览器类型、操作系统软件(例如 Windows 95 98 Macintosh)、cookie 偏好(用户是否打开或关闭它们)和搜索引擎关键字(哪些关键字做了什么)的数据。访问者用于访问我们的网站)。我们还记录了访问次数,所采取的路径,以及在我们网站内的站点和页面上花费的时间。请记住,这些信息都不是个人身份信息,我们只将这些信息分发给我们的内部员工以及与我们签署了保密协议的合作伙伴。我们与合作伙伴共享的任何信息都反映了整个网站或 Internet 使用趋势,而不是个别信息。</p>
<h4>IP地址: </h4>
<p>每次您访问本网站时,我们都会自动收集您的 IP 地址和您来自的网页。为了为您管理和优化站点并诊断我们站点的问题,我们使用您的 IP 地址来帮助识别您的身份并收集有关您的广泛人口统计信息。</p>
<h4>来自其他网站的信息: </h4>
<p>我们可能会放置指向其他方运营的其他网站的链接,并且可能会不时在我们的促销电子邮件中包含指向第三方网站的信息和链接。其中一些其他网站包含我们的品牌名称和商标以及我们拥有的其他知识产权;其他人没有。当您点击这些链接并访问这些其他网站时,无论它们是否包含我们的品牌名称、商标和其他知识产权,您都需要注意,我们不控制这些其他网站或这些其他网站”商业惯例,并且本隐私政策不适用于这些其他网站。因此,这些其他网站的运营商可能会收集有关您的不同类型的信息,并且可能以不同于我们在网站上收集信息的方式使用和披露该信息。我们鼓励您查看他们的隐私政策,并提醒您我们不对他们的行为负责。</p>
<h4>信息存储: </h4>
<p>您理解并同意我们在服务器上存储和处理您的信息,并且通过向我们提供任何数据,您同意将此类信息传输到网站服务器。当您从我们帐户中删除文件时,您与该文件之间将不再存在任何链接。删除的文件可能会缓存在我们服务器中以节省带宽,以防其他人请求它们。</p>
<h4>如何联系我们: </h4>
<p>如果您对您提交给我们这个隐私政策或信息有任何疑问,您可以通过邮件方式联系我们</p>
</div>
<div class="tab-pane fade" id="tab3Content3">
<h4>数字千年版权法案</h4>
<hr>
<p>要向我们提交版权侵权通知,您需要发送书面通知,其中包含《数字千年版权法》第 512(c)(3) 条要求和规定的信息。</p>
<p>要撰写适当的 DMCA 通知,请说明以下信息: </p>
<ol>
<li>表明自己是您认为受到侵犯的版权作品或专有权的所有者,或代表此类所有者行事的人,并提供物理签名(纸质形式时)或电子签名(电子形式时) )</li>
<li>指明您认为受到侵权的受版权保护的作品,或者如果有大量作品受到侵权,请提供作品的代表性清单。</li>
<li>通过在我们站点上提供包含这些材料的 Web URL,确定侵犯您的版权作品的材料的位置。请不要发送附加的图像、pdf 或其他文件格式的文件,而只能发送包含我们网址的列表。在信函正文中提供所有 URL 是帮助我们快速处理您的请求的最佳方式。</li>
<li>说明您的联系信息,包括您的姓名、街道地址、电话号码和电子邮件地址。如果您代表版权所有者行事,请同时说明您与版权所有者的关系(例如律师、供应商、代理人)</li>
<li>声明您“真诚地相信上述材料的使用未经版权所有者、其代理人或法律授权”。</li>
<li>声明通知中的信息准确无误,否则会受到伪证处罚。为此,请包括以下声明: “我发誓,通知中的信息准确无误,并且我是(版权)所有者或被授权代表专有权的所有者行事,在作伪证的处罚下涉嫌侵权”。</li>
<li>请用中文书写,所有电子邮件是任何其他语言都将被忽略。</li>
<li>要行使您的 DMCA 权利,您必须将适当的 DMCA 通知发送至我们的指定代理至电子邮件。</li>
</ol>
<p>未能包含上述所有信息可能会导致 DMCA 通知的处理延迟。请注意,根据 DMCA 512(f) ,任何故意歪曲材料或活动侵权的人都可能需要承担责任。</p>
<p>如果我们收到声称侵犯版权的适当通知,它将通过删除或禁止访问声称侵权或成为侵权活动主题的材料迅速做出回应。请注意,我们不一定会向报告者发送有关删除操作的确认。</p>
</div>
</div>
</div>
</div>
</div>'
);

2
public/static/jquery/lazyload.min.js vendored Executable file
View File

@ -0,0 +1,2 @@
/*! Lazy Load 2.0.0-rc.2 - MIT license - Copyright 2007-2019 Mika Tuupola */
!function(t,e){"object"==typeof exports?module.exports=e(t):"function"==typeof define&&define.amd?define([],e):t.LazyLoad=e(t)}("undefined"!=typeof global?global:this.window||this.global,function(t){"use strict";function e(t,e){this.settings=s(r,e||{}),this.images=t||document.querySelectorAll(this.settings.selector),this.observer=null,this.init()}"function"==typeof define&&define.amd&&(t=window);const r={src:"data-src",srcset:"data-srcset",selector:".lazyload",root:null,rootMargin:"0px",threshold:0},s=function(){let t={},e=!1,r=0,o=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(e=arguments[0],r++);for(;r<o;r++)!function(r){for(let o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e&&"[object Object]"===Object.prototype.toString.call(r[o])?t[o]=s(!0,t[o],r[o]):t[o]=r[o])}(arguments[r]);return t};if(e.prototype={init:function(){if(!t.IntersectionObserver)return void this.loadImages();let e=this,r={root:this.settings.root,rootMargin:this.settings.rootMargin,threshold:[this.settings.threshold]};this.observer=new IntersectionObserver(function(t){Array.prototype.forEach.call(t,function(t){if(t.isIntersecting){e.observer.unobserve(t.target);let r=t.target.getAttribute(e.settings.src),s=t.target.getAttribute(e.settings.srcset);"img"===t.target.tagName.toLowerCase()?(r&&(t.target.src=r),s&&(t.target.srcset=s)):t.target.style.backgroundImage="url("+r+")"}})},r),Array.prototype.forEach.call(this.images,function(t){e.observer.observe(t)})},loadAndDestroy:function(){this.settings&&(this.loadImages(),this.destroy())},loadImages:function(){if(!this.settings)return;let t=this;Array.prototype.forEach.call(this.images,function(e){let r=e.getAttribute(t.settings.src),s=e.getAttribute(t.settings.srcset);"img"===e.tagName.toLowerCase()?(r&&(e.src=r),s&&(e.srcset=s)):e.style.backgroundImage="url('"+r+"')"})},destroy:function(){this.settings&&(this.observer.disconnect(),this.settings=null)}},t.lazyload=function(t,r){return new e(t,r)},t.jQuery){const r=t.jQuery;r.fn.lazyload=function(t){return t=t||{},t.attribute=t.attribute||"data-src",new e(r.makeArray(this),t),this}}return e});

View File

@ -0,0 +1 @@
{"version":3,"sources":["lazyload.js"],"names":["root","factory","exports","module","define","amd","LazyLoad","global","this","window","images","options","settings","extend","defaults","document","querySelectorAll","selector","observer","init","src","srcset","rootMargin","threshold","extended","deep","i","length","arguments","Object","prototype","toString","call","obj","prop","hasOwnProperty","merge","IntersectionObserver","loadImages","self","observerConfig","entries","Array","forEach","entry","isIntersecting","unobserve","target","getAttribute","tagName","toLowerCase","style","backgroundImage","image","observe","loadAndDestroy","destroy","disconnect","lazyload","jQuery","$","fn","attribute","makeArray"],"mappings":"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"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long