使用时从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)
move_uploaded_file将返回一个含糊不清的含义false,这意味着您不知道移动是否成功,或文件是否有效.
在Web应用程序的情况下,用户不会知道出了什么问题(开发人员也不知道).因此,我建议首先检查文件的有效性,并在尝试移动文件之前记录/输出相应的错误消息.