从文件夹中删除图像

时间:2014-02-25 13:23:52

标签: php

我试图在用户点击删除

时删除图像
if (isset($_GET['sid'])) {
    $sid = $_GET['sid'];
}


$getImageName = "SELECT * FROM header_image_arabic WHERE id='" . $sid . "'";
$QgetImageName = $db->query($getImageName) or die($db->error);
if ($Fname = $QgetImageName->fetch_object())
    $myImageName = $Fname->image;
// delete image from dir function
$dir = "../images/backSlider_arabic/";
opendir($dir);
if (dir($dir)) {
    $filename = $myImageName;
    if (file_exists($filename)) {
        unlink("../images/backSlider_arabic/" . $filename);
        echo 'File' . $filename . 'has been deleted';
    } else {
        echo 'Could not delete ' . $filename . ',file does not exist';
        echo "<br />" . dirname("../images/backSlider_arabic/") . ".<br />";
    }
} else {
    echo "Dir not there";
}
closedir();

每次点击删除它都会出现“无法删除myfile.jpg,文件不存在”

以更高的安全性编辑mySql

if(isset($_GET['sid'])){
     $sid=$_GET['sid'];
}
    $getName = $db->prepare("SELECT * FROM header_image_arabic WHERE id=?");
    $getName->bind_param('s', $sid);
    $getName->execute();
    $result = $getName->get_result();
    if($Fname=$result->fetch_object())
    $myImageName=$Fname->image;
    //delete image from dir function
    $dir="../images/backSlider_arabic/";
    opendir($dir);
    if(dir($dir)){
    $filename=$myImageName;
    if(file_exists("../images/backSlider_arabic/".$filename)) {
    unlink("../images/backSlider_arabic/".$filename);
    echo'File'.$filename.'has been deleted';
    }else{
    echo 'Could not delete '.$filename.',file does not exist';
    echo "<br />".dirname("../images/backSlider_arabic/").".<br />";
    }
    }else{echo"Dir not there";}
    closedir();

我已经更新了我的代码,因为mySql查询的安全性非常差我使用预备语句以更好的方式。

2 个答案:

答案 0 :(得分:1)

首先,您确实需要正确检查并转义变量!你的脚本真的很糟糕。

但是,如果是为了学习,关于你的问题,可能会出现错误:

if(file_exists($filename)) {

应该是

if (file_exists("../images/backSlider_arabic/".$filename)) {

但是请调整并修复你的脚本,你要为这样的人打开它,删除他们喜欢的任何内容。

答案 1 :(得分:0)

我希望您查看的内容超过isset($_GET['sid'])

出于调试目的,在尝试删除之前使用echo或var_dump来显示路径/图像

如果您拥有正确的权利(读/写),请检查您的服务器