似乎教程里都是这么告诉我们的,在php里移动上传的文件要用move_uploaded_file,但是为什么非要使用这个函数来移动上传的文件呢?
move_uploaded_file
上传文件的地址不是在$_FILES数组的tmp_name里面吗?而且我测试过,用一般的文件函数,像rename和file_get_contents之类的,都可以操作这个文件,那么不使用这个函数到底有什么坏处呢?
$_FILES
tmp_name
rename
file_get_contents
处于安全原因,手册上的说明是:
本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。
is_uploaded_file函数上给出了一个例子:确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。