move_uploaded_file和is_uploaded_file之间的区别

Mar*_*rco 4 php

使用时从php表单上传文件

<input name="xxx" type="file">
Run Code Online (Sandbox Code Playgroud)

是否有必要使用php函数is_uploaded_file来检查它是否是通过PHP的HTTP POST上传机制上传的?

我已经阅读了有关该功能的所有内容,我看不到它的用途?我错了吗?

在它说的PHP文档中

如果通过HTTP POST上传由filename命名的文件,则返回TRUE.这有助于确保恶意用户没有试图欺骗脚本处理不应该工作的文件

但是,上传文件的主要功能move_uploaded_file也会检查它是否是有效文件

此函数检查以确保filename指定的文件是有效的上载文件(意味着它是通过PHP的HTTP POST上载机制上传的).如果文件有效,它将被移动到目标给出的文件名.

所以,我的问题如下:

是否真的有必要使用is_upload_file,如果推测,move_uploaded_file已经检查了恶意内容?

// if artwork file upload correctly, continue!
if ($_FILES['artwork']['error'][0] == 0) {

    // check if the artwork file was uploaded via HTTP POST to prevent a malicious attack
    if (is_uploaded_file($_FILES['artwork']['tmp_name'][0])) {

       // move files
    }
}
Run Code Online (Sandbox Code Playgroud)

kar*_*m79 5

move_uploaded_file将返回一个含糊不清的含义false,这意味着您不知道移动是否成功,或文件是否有效.

在Web应用程序的情况下,用户不会知道出了什么问题(开发人员也不知道).因此,我建议首先检查文件的有效性,并在尝试移动文件之前记录/输出相应的错误消息.