PHP图像删除脚本不起作用

时间:2015-05-30 19:58:51

标签: php jquery html ajax post

我有一个图库脚本,我正在添加删除功能。我已经实现了所有内容,但我的文件没有被删除。

这是我的图库脚本,其中还包含一个删除图像的提交按钮:

<?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" />

如果这是问题,如何修改我的图库脚本以不在文件目录中包含值。

我没有收到任何错误。我检查了我的日志。除了图像不会删除之外,一切似乎都正常工作。

编辑:在旁注中,我怎么能用复选框一次删除多个?这会更好吗?

1 个答案:

答案 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';
       }
  }
?>