ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

别被坑了!PHP文件上传下载源码,安全漏洞一抓一个准

2026/8/15 11:51:50 拓冰建站 浏览量
别被坑了!PHP文件上传下载源码,安全漏洞一抓一个准

PHP 文件上传

通过 PHP,可以把文件上传到服务器。

本章节实例在 test 项目下完成,目录结构为:

test |-----upload # 文件上传的目录 |-----form.html # 表单文件 |-----upload_file.php # php 上传代码

源码下载创建一个文件上传表单

允许用户从表单上传文件是非常有用的。

请看下面这个供上传文件的 HTML 表单:

菜鸟教程(runoob.com)

文件名:

将以上代码保存到 form.html 文件中。

有关上面的 HTML 表单的一些注意项列举如下:

作出说明, 让用户实施上传文件这一行为, 无疑是存在着极大安全隐患的风险。所以, 务必要仅仅准许那些可信度得到确认的用户来执行文件上传此项操作才行。

创建上传脚本

".php" 文件含有供上传文件的代码:

0) { echo "错误:" . $_FILES["file"]["error"] . " "; } else { echo "上传文件名: " . $_FILES["file"]["name"] . " "; echo "文件类型: " . $_FILES["file"]["type"] . " "; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB "; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } ?>

在运用 PHP 的全局数组 $ 时, 能够将文件从客户计算机传至远程服务器, 实现文件上传操作。

最先呈现的参数乃是表单之中, input的name, 紧接着的下标能够是"name"、"type"、"size"、""亦或者是"error"。呈现情况如同下面这样:

这关乎一种特别简单的文件上扬方式, 依循安全层面的思索, 您理应扩充谈及允许哪些用户做出文件上扬行为的制约。

上传限制

在这个脚本里, 针对文件上传, 将其限制进行了增添。用户能够上传的文件类型, 仅仅是.gif、.jpeg、.jpg、.png这几种, 并且文件所在的大小, 必然是要小于200 kB的。

0) { echo "错误:: " . $_FILES["file"]["error"] . " "; } else { echo "上传文件名: " . $_FILES["file"]["name"] . " "; echo "文件类型: " . $_FILES["file"]["type"] . " "; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB "; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"]; } } else { echo "非法的文件格式"; } ?>

保存被上传的文件

在上边的实例里, 于那被称之为服务器的对象存在着的PHP临时文件夹之中, 创建了一个体现为被上传文件的临时副本的事物。

彼时, 这个临时生成的副本文件将会于脚本终结之际不见踪影。若要留存那被上传的文件, 我们得把它复制到别的地方去:

0) { echo "错误:: " . $_FILES["file"]["error"] . " "; } else { echo "上传文件名: " . $_FILES["file"]["name"] . " "; echo "文件类型: " . $_FILES["file"]["type"] . " "; echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB "; echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . " "; // 判断当前目录下的 upload 目录是否存在该文件 // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777 if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " 文件已经存在。 "; } else { // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "文件存储在: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "非法的文件格式"; } ?>

上面的脚本对文件存在与否进行了检测, 假如该文件并不存在, 于是便将此文件进行拷贝, 拷贝至名为“”的那个目录之下。