删除照片模块

This commit is contained in:
筱锋xiao_lfeng 2023-02-03 18:43:19 +08:00
parent f158d20e69
commit 7ff7e89e18
3 changed files with 236 additions and 12 deletions

View File

@ -8,16 +8,34 @@ $F = new Functions();
/** /**
* @var array $Normal 普通事件API * @var array $Normal 普通事件API
* @var array $config 配置文件 * @var array $config 配置文件
* @var array $ApiAlbum 图库API * @var array $ApiAlbumList 图库API
*/ */
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select_list.php?session='.$config['SESSION']; $ApiAlbumList_url = $F->Current_HTTP().'/api/album/select_list.php?session='.$config['SESSION'];
$ApiAlbumList_ch = curl_init($ApiAlbumList_url);
curl_setopt($ApiAlbumList_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ApiAlbumList_ch, CURLOPT_RETURNTRANSFER, true);
$ApiAlbumList = curl_exec($ApiAlbumList_ch);
$ApiAlbumList = json_decode($ApiAlbumList,true);
$ApiAlbum_url = $F->Current_HTTP().'/api/album/select.php?session='.$config['SESSION'].'&album='.urldecode(htmlspecialchars($_GET['album']));
$ApiAlbum_ch = curl_init($ApiAlbum_url); $ApiAlbum_ch = curl_init($ApiAlbum_url);
curl_setopt($ApiAlbum_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']); curl_setopt($ApiAlbum_ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ApiAlbum_ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ApiAlbum_ch, CURLOPT_RETURNTRANSFER, true);
$ApiAlbum = curl_exec($ApiAlbum_ch); $ApiAlbum = curl_exec($ApiAlbum_ch);
$ApiAlbum = json_decode($ApiAlbum,true); $ApiAlbum = json_decode($ApiAlbum,true);
// 筛查指定图库
for ($i=0; $i<count($ApiAlbumList['data']); $i++) {
if ($ApiAlbumList['data'][$i]['id'] == urldecode(htmlspecialchars($_GET['album']))) {
$Album = $ApiAlbumList['data'][$i];
}
}
if ($Album['id'] == null) {
header('location: ./album.php');
}
$page = 2; $page = 2;
?> ?>
<!doctype html> <!doctype html>
@ -49,14 +67,37 @@ $page = 2;
<?php <?php
if (!empty($_COOKIE['user'])) { if (!empty($_COOKIE['user'])) {
?> ?>
<div class="col-12 mb-3"> <div class="col-6 mb-3 text-start">
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097"> <a href="./album_edit.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>" class="btn btn-outline-info text-center"><i class="bi bi-backspace"></i> 相册管理</a>
<div class="card-body"> </div>
<div class="row"> <div class="col-6 mb-3 text-end">
<div class="col-12 fs-3 fw-bold text-center">正在开发</div> <button class="btn btn-outline-danger text-center" data-bs-toggle="modal" data-bs-target="#DelPicture"><i class="bi bi-x-circle"></i> 确认删除</button>
</div> </div>
<div class="col-12">
<form method="post" action="" id="forms" onsubmit="return false">
<div class="row">
<?php
for ($i=0; $i<count($ApiAlbum['data']); $i++) {
?>
<div class="col-6 mb-3">
<div class="card shadow-sm rounded-3 border-light" style="background-color: rgba(255,192,203,0.2); color: #ff8097">
<div class="card-body">
<div class="row">
<div class="col-8">
<img src="<?php echo $ApiAlbum['data'][$i]['url'] ?>!pw80" class="container-fluid" alt="">
</div>
<div class="col-4 text-center">
<input class="form-check-input" type="checkbox" value="<?php echo $ApiAlbum['data'][$i]['id'] ?>" id="cbox[]" name="cbox[]">
</div>
</div>
</div>
</div>
</div>
<?php
}
?>
</div> </div>
</div> </form>
</div> </div>
<?php <?php
} else { } else {
@ -78,6 +119,23 @@ $page = 2;
</div> </div>
</div> </div>
</div> </div>
<!-- DelPicture -->
<div class="modal fade" id="DelPicture" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">删除所选图片</h1>
</div>
<div class="modal-body row">
<div class="col-12">你确认是否删除所选图片嘛?这将会失去很久...很久......</div>
</div>
<div class="modal-footer">
<button type="button" id="button_cancel" class="btn btn-success" data-bs-dismiss="modal"><i class="bi bi-x-circle"></i> 取消删除</button>
<button type="button" id="button_upload" class="btn btn-danger" onclick="delete_picture()"><i class="bi bi-trash"></i> 确认删除</button>
</div>
</div>
</div>
</div>
<!-- Toast --> <!-- Toast -->
<div class="toast-container position-fixed top-0 start-0 p-3"> <div class="toast-container position-fixed top-0 start-0 p-3">
<div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true"> <div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
@ -98,16 +156,16 @@ $page = 2;
<script type="text/javascript"> <script type="text/javascript">
const LiveToast = document.getElementById('liveToast') const LiveToast = document.getElementById('liveToast')
const toast = new bootstrap.Toast(LiveToast) const toast = new bootstrap.Toast(LiveToast)
function create() function delete_picture()
{ {
$.ajax({ $.ajax({
async: true, async: true,
type: "POST", type: "POST",
data: $('#forms').serialize(), data: $('#forms').serialize(),
url: "/plugins/album_list_check.php", url: "/plugins/picture_delete.php?album=<?php echo urldecode(htmlspecialchars($_GET['album'])) ?>",
success: function(result) { success: function(result) {
if (result == 'SUCCESS') { if (result == 'SUCCESS') {
$('#ajax_return').text('新建好了') $('#ajax_return').text('已删除!')
toast.show() toast.show()
setTimeout(function () { setTimeout(function () {
window.location.reload() window.location.reload()
@ -115,6 +173,9 @@ $page = 2;
} else if (result == 'UPLOAD_FAIL') { } else if (result == 'UPLOAD_FAIL') {
$('#ajax_return').text('新建失败') $('#ajax_return').text('新建失败')
toast.show() toast.show()
}else if (result == 'IMAGE_SELECT') {
$('#ajax_return').text('请选择图片')
toast.show()
} else if (result == 'OPEN_FALSE') { } else if (result == 'OPEN_FALSE') {
$('#ajax_return').text('是否开放啊?有问题') $('#ajax_return').text('是否开放啊?有问题')
toast.show() toast.show()

View File

@ -0,0 +1,119 @@
<?php
/**
* nw_love API
* @copyright 2022-2023 ZCW and YN. All Rights Reserved.
*/
/**
* @var mysqli $SqlConn 数据库链接信息
* @var array $config 设置相关的数据
*/
require_once $_SERVER['DOCUMENT_ROOT'] . '/Aliyun/aliyun-oss-php-sdk-2.6.0.phar';
require_once $_SERVER['DOCUMENT_ROOT'] . '/Aliyun/autoload.php';
use OSS\OssClient;
use OSS\Core\OssException;
// 载入前置组件
include $_SERVER['DOCUMENT_ROOT'] . "/api/api-loader.php";
// 载入类
require_once $_SERVER['DOCUMENT_ROOT'] . '/api/modules/ApiFunction.php';
$AFT = new ApiFunction();
// 获取参数
// POST
$PostData = file_get_contents('php://input');
$PostData = json_decode($PostData, true);
// 逻辑构建
if ($AFT->Get_Session($PostData['session'])) {
if (preg_match('/[0-9]+$/',$PostData['album'])) {
if (count($PostData['data']) > 0) {
// 数据库查找
$Result_Album = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['AlbumList']." WHERE `id`='".$PostData['album']."'");
$Result_Album_Object = mysqli_fetch_object($Result_Album);
// 确认数据
if ($Result_Album_Object->id != null) {
// 处理OSS
// 阿里云主账号AccessKey拥有所有API的访问权限风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维请登录RAM控制台创建RAM用户。
$accessKeyId = $config['Aliyun']['AccessKeyID'];
$accessKeySecret = $config['Aliyun']['AccessKeySecret'];
// Endpoint以华东1杭州为例其它Region请按实际情况填写。
$endpoint = "https://oss-cn-shenzhen-internal.aliyuncs.com";
// 填写Bucket名称。
$bucket= "nw-love";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);
// 填写需要删除的多个文件完整路径。文件完整路径中不能包含Bucket名称。
$objects = array();
for ($i=0; $i<count($PostData['data']); $i++) {
$Result_Picture = mysqli_query($SqlConn,"SELECT * FROM ".$config['TABLE']['Album']." WHERE `id`='".$PostData['data'][$i]."'");
$Result_Picture_Object = mysqli_fetch_object($Result_Picture);
preg_match('/(?<=https:\/\/img.na-wen.love\/Upload\/'.$PostData['album'].'\/).*/',$Result_Picture_Object->url,$datas);
$objects[] = "Upload/".$PostData['album']."/".$datas[0];
mysqli_free_result($Result_Picture);
mysqli_query($SqlConn,"DELETE FROM ".$config['TABLE']['Album']." WHERE `id`='".$Result_Picture_Object->id."'");
}
$result = $ossClient->deleteObjects($bucket, $objects);
foreach ($result as $info){
$obj = strval($info);
//printf("Delete ".$obj." : Success" . "\n");
}
// 输出结果
$data = [
'output' => 'SUCCESS',
'code' => 200,
'info' => '删除成功',
];
} catch (OssException $e) {
// 输出结果
$data = [
'output' => 'ALIYUN_DELETE_FAIL',
'code' => 403,
'info' => '远端删除失败',
];
header('HTTP/1.1 403 Forbidden');
return;
}
} else {
// 输出结果
$data = [
'output' => 'ALBUM_NONE',
'code' => 403,
'info' => '没有这个图库',
];
header('HTTP/1.1 403 Forbidden');
}
} else {
// 输出结果
$data = [
'output' => 'IMAGE_SELECT',
'code' => 403,
'info' => '请选择图片',
];
header('HTTP/1.1 403 Forbidden');
}
} else {
// 输出结果
$data = [
'output' => 'ALBUM_FALSE',
'code' => 403,
'info' => '图库编号不符合标准',
];
header('HTTP/1.1 403 Forbidden');
}
} else {
// 输出结果
$data = [
'output' => 'SESSION_DENY',
'code' => 403,
'info' => '参数 Post[session] 缺失/错误',
];
header('HTTP/1.1 403 Forbidden');
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);

View File

@ -0,0 +1,44 @@
<?php
/**
* @var array $config
*/
include $_SERVER['DOCUMENT_ROOT'].'/config.inc.php';
if (!empty($_COOKIE['user'])) {
// 函数处理
$PostUrl = 'https://www.na-wen.love/api/album/delete_picture.php';
$data = [
'session'=> $config['SESSION'],
'album'=> (int)urldecode(htmlspecialchars($_GET['album'])),
'data'=>$_POST['cbox'],
];
$JsonStr = json_encode($data); //转换为json格式
$PostData = http_post_json($PostUrl, $JsonStr);
$PostData = json_decode($PostData,true);
echo $PostData['output'];
}
// 发送POST
/**
* @param $url
* @param $jsonStr
* @return bool|string
*/
function http_post_json($url, $jsonStr) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($jsonStr)
)
);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}