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/