【发布时间】:2018-08-23 19:16:19
【问题描述】:
问题是只从数据库中删除,而不是从服务器文件夹中删除。我的代码有错误吗?
这个删除IMG.php
<?php
include('dbh.inc.php');
if (isset($_POST['submit4'])) {
//DELETE FILE
$del_img=$_GET['name'];
$queryy = "DELETE FROM table1 WHERE name='$del_img'";
$result = mysqli_query($conn, $queryy);
if ($result) {
?> <script> alert('This image has been deleted.'); window.location ="/pages/pictures.php"; </script>
<?php
unlink("/pages/uploads/$del_img");
} else {
?>
<script> alert('This image not yet deleted.'); window.location ="/pages/pictures.php"; </script>
<?php
}
}
?>
【问题讨论】:
-
JS 是在 PHP 完成后执行的,所以这没什么意义
-
@Qirel 有趣的是,一条错误的评论会触发两个完全相同的错误答案...
-
我建议在 unlink 函数中使用 $_GET 数据...用户可以 ../../ 并删除您的网站...无论如何,请注释掉页面更改并查看如果在使用 unlink 时出现错误。
-
警告:当使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")程序接口是 PHP 4 时代引入的mysqliAPI 的产物,不应在新代码中使用。
标签: php mysql file server unlink