php - 怎么样过滤掉非图片呢?

查看:92
本文介绍了php - 怎么样过滤掉非图片呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在所有文件都会被当做图片来处理 我希望如果只显示图片 不是图片就不处理 包括改过的拓展名的情况 这里好像也没法用getimagesize啊

$dir = "upload/";
    if (is_dir($dir)){
        if ($dh = opendir($dir)){
        while (($file = readdir($dh))!= false){
            if(!is_dir($file)) {
            }
        }
        closedir($dh);
        }
    }

解决方案

肯定不能按扩展名来判断,因为扩展名可以修改的.
不管你过来的是文件还是图片,它的路径都是一个字符串对吧!

$url='./1.jpg';
再用getimagesize 去获取这个$url 如果这个路径是一个有效的图片,就会返回一个数组,里面有图片的类型.下面就直接判断就行了.如果不是,就会返回false 并产生 E_WARNING 级的错误.
只要能返回false 就说明这不是图片,就不处理,你想在这跳转还是return看你自己了.

至于这个E_WARNING错误,PHP有设置可以让它不报级别的错误.不会自行百度.更何况当网站上线后,所有的级别错误都得屏闭.

刚刚查了查PHP手册.你用这个函数去判断它的类型更好也更快! exif_imagetype 函数

而且如果类型不是图片,直接返回false ,而且还不会报错误.实用性更加的强.推荐使用!

这篇关于php - 怎么样过滤掉非图片呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆