我有一个图库脚本,我正在添加删除功能。我已经实现了所有内容,但我的文件没有被删除。
这是我的图库脚本,其中还包含一个删除图像的提交按钮:
<?php
$directory = "images/gallery/";
$filecount = 0;
$files = glob($directory . "*");
if ($files){
$filecount = count($files);
}
echo "<h2>Gallery - Click To Enlarge</h2><h3>$filecount Images</h3>";
?>
</div>
<div id="galleryImages">
<?php
$folder = 'images/gallery/';
$filetype = '*.*';
$files = glob($folder.$filetype);
$total = count($files);
$per_page = 15;
$last_page = (int)($total / $per_page);
if(isset($_GET["page"]) && ($_GET["page"] <=$last_page) && ($_GET["page"] > 0) ){
$page = $_GET["page"];
$offset = ($per_page + 1)*($page - 1);
}else{
$page=1;
$offset=0;
}
$max = $offset + $per_page;
if($max>$total){
$max = $total;
}
show_pagination($page, $last_page);
for($i = $offset; $i< $max; $i++){
$file = $files[$i];
$path_parts = pathinfo($file);
$filename = $path_parts['filename'];
echo '<div class="thumbImage">'."\n";
echo '<a href="'. $file .'" data-featherlight="image">'."\n";
echo '<img src="'. $file .'" width="200px" alt="" />'."\n";
echo '</a>'."\n";
if(isset($_SESSION['usr']) && isset($_SESSION['pswd'])){
echo'<span class="deleteImage">'."\n";
echo '<input type="hidden" value="'.$file.'" name="delete_file" id="delete_file" />'."\n";
echo '<input type="button" value="Delete image" onclick="delete_image()"/>'."\n";
echo '</span>'."\n";
}
echo '</div>'."\n";
}
show_pagination($page, $last_page);
function show_pagination($current_page, $last_page){
echo '<div class="galleryPagination">';
if( $current_page > 1 ){
echo ' <a href="?page='.($current_page-1).'"> Previous Page </a> ';
}
if( $current_page > 1 ){
echo ' <a href="?page=1"> First Page </a> ';
}
if( $current_page != $last_page ){
echo ' <a href="?page='.$last_page.'"> Last Page </a> ';
}
if( $current_page < $last_page ){
echo ' <a href="?page='.($current_page+1).'"> Next Page </a> ';
}
echo '</div>';
}
?>
我的Jquery / Ajax提交表单:
<script type="text/javascript">
function delete_image()
{
var status = confirm("Are you sure you want to delete ?");
if(status==true)
{
var file = $("#delete_file").val();
$.ajax({
type:"POST",
url:"scripts/php/deleteImage.php",
data:{file:file},
success(html){
ohSnap('Image has been deleted', 'red');
}
});
}
}
</script>
以及deleteImage.php的内容
<?php
if ( array_key_exists ('delete_file', $_POST ) ) {
$filename = $_POST['delete_file'];
if ( file_exists ( $filename ) ) {
unlink( $filename );
echo 'File '.$filename.' has been deleted';
}
}
?>
我相信我知道问题是什么,但我不确定。当我的php生成缩略图图像时,它必须包括图像目录,以便链接图像。它在提交按钮中执行相同操作以进行删除。
例如,这是输出图像之一:
<div class="thumbImage">
<a href="images/gallery/1021141027-1431931148.jpg" data-featherlight="image">
<img src="images/gallery/1021141027-1431931148.jpg" width="200px" alt="" />
</a>
<span class="deleteImage">
<input type="hidden" value="images/gallery/1021141027-1431931148.jpg" name="delete_file" id="delete_file" />
<input type="button" value="Delete image" onclick="delete_image()"/>
</span>
</div>
我想相信问题就在这一行:
<input type="hidden" value="images/gallery/1021141027-1431931148.jpg" name="delete_file" id="delete_file" />
你们认为如果这样说会有用吗
<input type="hidden" value="1021141027-1431931148.jpg" name="delete_file" id="delete_file" />
如果这是问题,如何修改我的图库脚本以不在文件目录中包含值。
我没有收到任何错误。我检查了我的日志。除了图像不会删除之外,一切似乎都正常工作。
编辑:在旁注中,我怎么能用复选框一次删除多个?这会更好吗?
答案 0 :(得分:0)
echo <input type="button" value="Delete image" onclick="delete_image()"/>'."\n";
更改此行
?><input type="button" value="Delete image" onclick="delete_image('<?php echo $file;?>')"/>;
<?php
和你的脚本
<script type="text/javascript">
function delete_image(value)
{
var status = confirm("Are you sure you want to delete ?");
if(status==true)
{
$.ajax({
type:"POST",
url:"scripts/php/deleteImage.php",
data:{file:value},
success(html){
ohSnap('Image has been deleted', 'red');
}
});
}
}
</script>
删除代码
<?php
if ( array_key_exists ('file', $_POST ) ) {
$filename = $_POST['file'];
if ( file_exists ( $filename ) ) {
unlink( $filename );
echo 'File '.$filename.' has been deleted';
}
}
?>