echo '上传文件的内容为:';
echo $contents;
?>
_______________________________________________________________________________
_____________________________
测试一下:
1
、建立一个 123.txt
文件,里面输入一些纯文本字符,比如 abc,上传成功!
2、我们再来试看其他后缀名,如.exe,.php,.htm 之类的,只要非 txt,就将导致失败!
3、把任意一个大于 1M 的文件名改为 123.txt 并上传,我们将发现超过限制大小的文件将
导致上传失败!
4、将 123.txt
的内容改掉,删除所有内容,输入 <html>HTML code</html>,保存并
上传,我们会发现上传失败!
5、将 123.txt
的内容改掉,删除所有内容,输入 <?php echo'PHP code'; ?>保存并上
传,我们会发现 File 文件夹中有一个 0 字节的,没有任何内容的 123.txt 文件!
相关说明:
首先我们使用了检测MIME类型的方法,因此如果希望通过传一个错误的类型来蒙混过
关,这对那些有恶意的用户来说还是很难的,但这只是错误检查,并非安全性检查,但起
码这比简单的后缀名过滤的上传方法要安全一些。
之后我们检查要打开的文件是否已经真的被上传而且不是一个本地文件,因为有的恶意软
件能够让侵入者修改文件上传脚本,使此脚本可以将本地文件当成上载的文件进行处理。
我们使用 is_uploaded_file()
和 move_uploaded_file() 这两个函数来确保所处理的文
件已经被上传,而非一个本地文件。
最后,我们打开这个文件,使用 strip_tags()
函数清除任何 HTML
或 PHP 标记,防止
通过重重错误检查的 123.txt 仍然含有恶意代码。最后保存文件,直到这里,才真正的完
成了整个上传工作。
补充说明:
有可能某些人看客对 upload.php
中的 switch 条件句有些模糊,不知道为什么要这么写,
我在这里简单的补充说明一下: