深圳市金黑网络技术有限公司始终坚持以用户需求为导向,提供安全、稳定、高效的产品和服务!
签到 · 搜索导航 · 服务热线 · 微信/手机:17817817816

深圳网站建设

查看: 482|回复: 0

php验证文件格式

[复制链接]

UID
1
贡献
844
金币
1540
主题
520
在线时间
333 小时
注册时间
2022-1-15
最后登录
2024-11-12
QQ
发表于 2022-11-24 18:22:20 | 482 | 0 | 显示全部楼层 |阅读模式
php验证文件格式
方法一:判断文件的扩展名(不能识别文件伪装)
操作思路:将文件的后缀和允许的后缀对比
  1. <body>
  2. <?php
  3. if(!empty($_POST)) {
  4.         $allow=array('.jpg','.png','.gif');        //允许的扩展名
  5.         $ext=strrchr($_FILES['face']['name'],'.');  //上传文件扩展名
  6.         if(in_array($ext,$allow))
  7.                 echo '允许上传';
  8.         else
  9.                 echo '文件不合法';
  10. }
  11. ?>
  12. <form method="post" action="" enctype='multipart/form-data'>
  13.         <input type="file" name="face">
  14.         <input type="submit" name="button" value="上传">
  15. </form>
  16. </body>
复制代码
注意:比较扩展名不能防止文件伪装。

方法二:通过$_FIELS[]['type']类型(不能识别文件伪装)
  1. <body>
  2. <?php
  3. if(!empty($_POST)) {
  4.         $allow=array('image/jpeg','image/png','image/gif');        //允许的类别
  5.         $mime=$_FILES['face']['type'];  //上传文件类型
  6.         if(in_array($mime,$allow))
  7.                 echo '允许上传';
  8.         else
  9.                 echo '文件不合法';
  10. }
  11. ?>
  12. <form method="post" action="" enctype='multipart/form-data'>
  13.         <input type="file" name="face">
  14.         <input type="submit" name="button" value="上传">
  15. </form>
  16. </body>
复制代码
注意:比较$_FIELS[]['type']不能防止文件伪装。

方法三:php_fileinfo扩展(可以防止文件伪装)
        在php.ini中开启fileinfo扩展
  1. extension=php_fileinfo.dll
复制代码
注意:开启fileinfo扩展以后,就可以使用finfo_*的函数了
php文件.jpg
  1. <body>
  2. <?php
  3. if(!empty($_POST)) {
  4.         //第一步:创建finfo资源
  5.         $info=finfo_open(FILEINFO_MIME_TYPE);
  6.         //var_dump($info);                //resource(2) of type (file_info)
  7.         //第二步:将finfo资源和文件做比较
  8.         $mime=finfo_file($info,$_FILES['face']['tmp_name']);
  9.         //第三步,比较是否合法
  10.         $allow=array('image/jpeg','image/png','image/gif');        //允许的类别
  11.         echo in_array($mime,$allow)?'合法':'不合法';
  12. }
  13. ?>
  14. <form method="post" action="" enctype='multipart/form-data'>
  15.         <input type="file" name="face">
  16.         <input type="submit" name="button" value="上传">
  17. </form>
  18. </body>
复制代码
小结:验证文件格式有三种方法
1、可以验证扩展名(不可以防止文件伪装)
2、通过$_FILES[]['type']验证(不可以防止文件伪装)
3、通过file_info扩展(可以防止文件伪装)

楼主热帖

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

快速回复 返回顶部 返回列表