无论If语句如何运行语句

时间:2013-02-16 16:15:05

标签: php file-upload if-statement

即使没有上传图片,也会执行'unlink()'方法,为什么会这样,我该如何解决呢?

If (isset($_FILES["image"]["name"])) {
    move_uploaded_file($_FILES["imageUp"]["tmp_name"],
        "C:/xampp/htdocs/" . $_FILES["image"]["name"]);
    //if (file_exists($delete)) {
        unlink($delete);
    }
    else {
    $img = $data['row']->image_name;
    }
//}

3 个答案:

答案 0 :(得分:0)

isset($_FILES["image"]["name"] 
即使您上传文件,也始终会设置

isset检查是否设置了该事物。所以它始终是true

所以你需要改变你的代码:

if (isset($_FILES["image"]["name"]) && !empty($_FILES["image"]["name"])) {
move_uploaded_file($_FILES["imageUp"]["tmp_name"],
    "C:/xampp/htdocs/" . $_FILES["image"]["name"]);
//if (file_exists($delete)) {
    unlink($delete);
} else {
    $img = $data['row']->image_name;
}

请试试这个。希望这会有所帮助:)

答案 1 :(得分:0)

根据 php documentation move_uploaded_file返回TRUE,如果一切正常,FALSE如果出现问题。

正如你所说,因为move_uploaded_file正在返回FALSE,所以图像没有移动 您可以证明将代码更改为:

var_dump(move_uploaded_file($_FILES["imageUp"]["tmp_name"],
    "C:/xampp/htdocs/" . $_FILES["image"]["name"]));

看看会有什么回归。

在以下情况下,

move_uploaded_file将返回FALSE:

  1. 目的地不存在
  2. 服务器没有足够的权限将文件移动到目标
  3. 文件未上传,因为它大于php.ini变量upload_max_filesize
  4. 文件未上传,因为它大于php.ini变量post_max_size
  5. 检查并纠正所有这些点,它应该正常工作。

答案 2 :(得分:0)

执行unlink()的真正原因是您已禁用if条件

if (file_exists($delete))使用//

这是代码,你可能想写:

if (isset($_FILES["image"]["name"]) && is_uploaded_file($_FILES['image']['tmp_name'])) {
    move_uploaded_file($_FILES["image"]["tmp_name"],
        "C:/xampp/htdocs/" . $_FILES["image"]["name"]);
    if (file_exists($delete)) {
        unlink($delete);
    } else {
        $img = $data['row']->image_name;
    }
}

并确保保存$delete!想象一下,$delete是否等于“C:\users\your-name\some-private-file”。 如果您需要更多帮助,请向我们提供更多关于此片段的代码。