我试图在用户点击删除
时删除图像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查询的安全性非常差我使用预备语句以更好的方式。
答案 0 :(得分:1)
首先,您确实需要正确检查并转义变量!你的脚本真的很糟糕。
但是,如果是为了学习,关于你的问题,可能会出现错误:
if(file_exists($filename)) {
应该是
if (file_exists("../images/backSlider_arabic/".$filename)) {
但是请调整并修复你的脚本,你要为这样的人打开它,删除他们喜欢的任何内容。
答案 1 :(得分:0)
我希望您查看的内容超过isset($_GET['sid'])
出于调试目的,在尝试删除之前使用echo或var_dump来显示路径/图像
如果您拥有正确的权利(读/写),请检查您的服务器