博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【PHP学习】move_uploaded_file的使用
阅读量:5734 次
发布时间:2019-06-18

本文共 1110 字,大约阅读时间需要 3 分钟。

定义和用法

move_uploaded_file() 函数将上传的文件移动到新位置。

若成功,则返回 true,否则返回 false。

语法

move_uploaded_file(file,newloc)
参数 描述
file 必需。规定要移动的文件。
newloc 必需。规定文件的新位置。

说明

本函数检查并确保由 file 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 newloc 指定的文件。

如果 file 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 false。

如果 file 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 false,此外还会发出一条警告。

这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

提示和注释

注释:本函数仅用于通过 HTTP POST 上传的文件。

注意:如果目标文件已经存在,将会被覆盖。

来自w3c的介绍,下面说说我遇到的问题。

一般来说,我们都会这样写保存文件:

$fileName = $_SERVER['DOCUMENT_ROOT'].'/Basic/uploads/'.$_FILES['file']['name'];move_uploaded_file($_FILES['file']['tmp_name'],$fileName )
先解释,这两句代码的含义:
直接保存文件,同时文件名也为用户上传的文件名

好了,这下子风险来了:

①直接保存文件。

这意味着不对文件进行任何识别,如果有用户上传了一段后台代码保存为jpg后缀或者其他,要是管理员一不注意将其以php映射,然后访问这个后台,- -结果可想而知,要是他在后台中执行删除所有数据库,整个网站直接GG。总之直接保存文件有很大风险。

②使用与用户文件名相同的文件名。

上述代码如果用户使用中文文件名,则会报错。

一牵涉到文件名,就牵涉到编码,要是文件名是英文+数字还好,如果包含中文那就头大了,要重新对其编码。

我认为可靠的保存,应该是这样的:

①要对用户上传的文件进行识别。

文件识别,这个部分有很多功能,我觉得用MIME type就很好,这个也很难伪造。

②要将文件名改换。

我觉得最好改成时间的格式像“201634104421”这种文件名,也可以将文件名与数据库相对应起来。

转载于:https://www.cnblogs.com/tinyjian/p/6550700.html

你可能感兴趣的文章
spring自动检测组件不同配置
查看>>
gpg
查看>>
JSP开发中防止用户浏览器的刷新键引起系统操作重复提交
查看>>
pppoe server name详解
查看>>
工业控制系统_ICS_概述和与IT系统的比较
查看>>
Linux用户管理(一)Linux系统概述
查看>>
nodejs express mongodb
查看>>
squid标准的传统代理
查看>>
java学习日记(1)
查看>>
电脑快捷键+C++继承与派生
查看>>
显示器和显示卡
查看>>
git安装 编译安装
查看>>
Python DBUtils数据连接池与mysql配合用法
查看>>
db2数据库HADR搭建
查看>>
中兴2928static/dhcp配置
查看>>
mysql方言 MyISAM 和 InnoDB区别
查看>>
生产环境MySQL快速备份工具XtraBackup使用案例
查看>>
Spring cache简单使用
查看>>
[转载] 广州军区表彰我省13名“国防之星”
查看>>
用Calendar 实现 计算 一段时间的毫秒值
查看>>