首页 >数据库 >mysql教程 >如何限制 PHP 文件上传的文件类型和大小?

如何限制 PHP 文件上传的文件类型和大小?

Susan Sarandon
Susan Sarandon原创
2024-11-01 04:58:02784浏览

How to Restrict File Types and Size in PHP File Uploads?

PHP 文件上传:有效限制文件类型和大小

在 PHP 中,控制文件上传并确保特定文件类型的接受至关重要。一位用户最近遇到了现有验证代码的问题:

<code class="php">//check file extension and size
$resume= ($_FILES['resume']['name']);
$reference= ($_FILES['reference']['name']);
$ext = strrchr($resume, ".");
$ext1 = strrchr($reference, ".");
if (!(($_FILES["resume"]["type"] == "application/doc")
|| ($_FILES["resume"]["type"] == "application/docx")
|| ($_FILES["resume"]["type"] == "application/pdf" ))
&& (($_FILES["reference"]["type"] == "application/doc")
|| ($_FILES["reference"]["type"] == "application/docx")
|| ($_FILES["reference"]["type"] == "application/pdf"))
&& (($ext == ".pdf") || ($ext == ".doc") || ($ext == ".docx"))
&& (($ext1 == ".pdf") || ($ext1 == ".doc") || ($ext1 == ".docx"))
&&  ($_FILES["resume"]["size"] < 400000) //accept upto 500 kb
&&  ($_FILES["reference"]["size"] < 400000)) {

//stop user
} else {
// allow files to upload
}</code>

据该用户称,此代码允许未经授权的文件类型(例如 TXT)通过,并且不强制执行大小限制。

解决方案:依靠 MIME 类型和适当的大小检查

为了解决这些问题,建议采用更强大的方法:

<code class="php">function allowed_file(){

//Allowed mime-type files
$allowed = array('application/doc', 'application/pdf', 'another/type');

//Validate uploaded file type
if(in_array($_FILES['resume']['type'], $allowed) AND in_array($_FILES['reference']['type'], $allowed)){

//Check file size
if($_FILES["resume"]["size"] < 400000 AND $_FILES["reference"]["size"] < 400000 ){

//File types and size are accepted, proceed with file processing
}
}
}</code>

解释:

此改进的代码使用 MIME(多用途互联网邮件扩展)类型而不是文件扩展名。 MIME 类型准确地表示文件格式并且不易被操纵。此外,它还会独立检查简历和参考文件的文件大小,确保限制得到执行。

以上是如何限制 PHP 文件上传的文件类型和大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn