php - 警告 : unlink(/web/htdocs/www. vhannibal.net/home/setting/) : Is a directory in [. ..]

标签 php mysql unlink

require("$_SERVER[DOCUMENT_ROOT]mysql.php");
$id = $_GET["id"];
$result = mysql_query("SELECT * FROM Setting WHERE ID = \"$id\"");
$row = mysql_fetch_array($result);
switch ($_GET["action"])
{
    case "update":
    if (!unlink("$_SERVER[DOCUMENT_ROOT]setting/$row[Filename]"))
    {
        echo "Non è stato possibile cancellare il vecchio file.";
        header("Refresh: 2.5; url=index.php");
        exit();
    }

错误是“警告:unlink(/web/htdocs/www.vhannibal.net/home/setting/):第 43 行是 [...] 中的目录”,第 43 行是

if (!unlink("$_SERVER[DOCUMENT_ROOT]setting/$row[Filename]"))

这是怎么回事?

最佳答案

首先,您应该考虑回到基础知识并阅读输入验证。

忽略明显的 mysql 注入(inject)问题,unlink() 只能在文件上调用。在此处的代码中,在删除 $row['Filename'] 之前,您不会检查它是否是一个文件。

您至少可以检查文件是否存在

if (is_file("$_SERVER[DOCUMENT_ROOT]setting/{$row['Filename']}")) {
  //delete code
}

关于php - 警告 : unlink(/web/htdocs/www. vhannibal.net/home/setting/) : Is a directory in [. ..],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470884/

相关文章:

php - 如何为要插入数据库sql的许多股票添加一个id

javascript - 循环json数据然后用php发送到数据库

php - MySQL、PHP、Ajax 来过滤结果集?

php - 如何使用 PHP 将 sqlite 转换为 mysql

PHP MySql 更新多行

mysql - 如何使用准备好的语句动态删除存储过程和函数 (MySQL) -- DROP PROCEDURE LIKE

PHP 无法在 fclose 后取消链接文件

ubuntu - GNU 并行取消链接错误

mysql - 使用 DateDiff 查找 table_1.column A 和 table_2.column B 相差 <90 分钟的示例

php - 为什么在打开的文件上取消链接成功?