Php 不管If语句如何运行语句

Php 不管If语句如何运行语句,php,file-upload,if-statement,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);

即使没有上传图像,也会执行“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;
    }
//}
将始终设置,即使您是否上载文件
isset
检查是否设置了该对象。所以它总是
真的

因此,您需要更改代码:

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;
}
请试试这个。希望这有帮助:)

根据返回的
TRUE
如果一切正常,
FALSE
如果出现问题

正如您所说,图像没有移动,因为move\u上传的\u文件返回
FALSE

您可以证明将代码更改为:

var_dump(move_uploaded_file($_FILES["imageUp"]["tmp_name"],
    "C:/xampp/htdocs/" . $_FILES["image"]["name"]));
看看什么东西回来了

move\u上传的\u文件
在以下情况下将返回FALSE:

  • 目标不存在
  • 服务器没有足够的权限将文件移动到目标
  • 文件未上载,因为它大于php.ini变量
    upload\u max\u filesize
  • 文件未上载,因为它大于php.ini变量
    post\u max\u size

  • 检查并纠正所有这些点,它应该会工作。

    执行
    取消链接()
    的真正原因是您禁用了if条件

    如果(文件存在($delete))
    使用
    /

    以下是代码,您可能需要编写:

    if(isset($_文件[“图像”][“名称”])和&is_上传的_文件($_文件[“图像”][“tmp_名称”])){
    移动上传的文件($文件[“图像”][“tmp文件名”],
    “C:/xampp/htdocs/”$_文件[“图像”][“名称”]);
    如果(文件_存在($delete)){
    取消链接(删除);
    }否则{
    $img=$data['row']->image\u name;
    }
    }
    
    并确保
    $delete
    已保存!想象一下,如果
    $delete
    等于“
    C:\users\your name\some private file
    ”。
    如果您需要更多帮助,请为我们提供更多有关此代码段的代码。

    删除的值从何而来?这意味着设置了文件[“图像”][“名称”]?什么是删除??你还没有解释那件事。$delete包含什么???$delete包含一个目录和一个图像的名称
    $delete
    不是目标文件
    C:/xampp/htdocs/“$\u文件[“图像”][“名称”]
    。我说得对吗?这很有效,有趣的是我的原始代码是if($\u文件[“图像”][“名称”!=”)我也被否决了!我不知道为什么,我写了一个像你一样的有效回复!让我们投票给萨巴里
    var_dump(move_uploaded_file($_FILES["imageUp"]["tmp_name"],
        "C:/xampp/htdocs/" . $_FILES["image"]["name"]));