惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

博客园 - 早上六点半遇见五月天

PHP 关于用判断is_resource函数判断 CURL 句柄,在 PHP 7.2+ 版本有一个重要变化! mysql 存储不过1000个中文选什么数据类型 PHP curl 模拟GET请求接口报错HTTP Status 400 – Bad Request 问题 删除所有的php-fpm进程命令 利用Navicat premium实现将数据从Oracle导入到MySQL Mac版phpstorm 一次性折叠所有函数/方法的快捷键 Mac 多次killall php-fpm之后会php-fpm会自动启动 解决方法 PHP 常用的字符串函数 MySQL 表示日期的数据类型 同一局域网下Mac无法远程连接至win7报错:Unable to connect to remote PC. MySQL 支持的存储引擎 设计模式之单例模式 MySQL 数据定义语言(DDL) 设计模式的原则和法则 GoF的23种设计模式分类和功能 PHP 跨域之header Mac brew安装的php修改了php.ini之后如何重启php? PHP 文件上传之如何识别文件伪装?——PHP的fileinfo扩展可! PHP 超全局变量之$GLOBALS
PHP 超全局变量之$_FILES
早上六点半遇见五月天 · 2019-12-24 · via 博客园 - 早上六点半遇见五月天

$_FILES——通过 HTTP POST 方式上传到当前脚本的项目的数组。


假设我们上传文件字段name='userfile',$_FILES数组里包括:

$_FILES['userfile']['name']      //客户端机器文件的原名称。
$_FILES['userfile']['type']     //文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。
$_FILES['userfile']['size']     //已上传文件的大小,单位为字节。
$_FILES['userfile']['tmp_name']   //文件被上传后在服务端储存的临时文件名。
$_FILES['userfile']['error']      //和该文件上传相关的错误代码。此项目是在 PHP 4.2.0 版本中增加的。
/**
错误码有:
UPLOAD_ERR_OK
其值为 0,没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE
其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE
其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
eg,在表单中添加隐藏域:value值单位是字节
<form enctype="multipart/form-data" action="test.php" method="POST">
  <!-- MAX_FILE_SIZE must precede the file input field -->
  <input type="hidden" name="MAX_FILE_SIZE" value="12" />
  <!-- Name of input element determines name in $_FILES array -->
  Send this file: <input name="userfile" type="file" />
  <input type="submit" value="Send File" />
</form>
                
UPLOAD_ERR_PARTIAL
其值为 3,文件只有部分被上传。

UPLOAD_ERR_NO_FILE
其值为 4,没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR
其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。

UPLOAD_ERR_CANT_WRITE
其值为 7,文件写入失败。PHP 5.1.0 引进。
**/
文件被上传后,默认地会被储存到服务端的默认临时目录中,除非 php.ini 中的 upload_tmp_dir设置为其它的路径。服务端的默认临时目录可以通过更改PHP运行环境的环境变量TMPDIR来重新设置,但是在PHP脚本内部通过运行 putenv() 函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。

文件上传可能用到的其他函数:

is_uploaded_file:

is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
is_uploaded_file ( string $filename ) : bool
    参数:filename——要检查的文件名。
    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。

move_uploaded_file:

move_uploaded_file — 将上传的文件移动到新位置
move_uploaded_file ( string $filename , string $destination ) : bool
    参数:filename  上传的文件的文件名;destination 移动文件到这个位置(绝对路径)

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