Php 检测文件是否为图像

Php 检测文件是否为图像,php,image,file-upload,upload,Php,Image,File Upload,Upload,我有一个将图像上传到服务器的代码,但是在上传图像之前,代码通过检查其扩展名(允许的扩展名为“jpg”、“png”和“gif”)来检查上传的文件是否是图像,但是我刚刚意识到这不够安全,因为我可以轻松创建一个“file.php”并将其重命名为“file.png”这样代码就不会阻止上传文件。是否有其他方法检测文件是否为图像 更新:我正在使用$\u文件获取图像。您可以这样做: $image = "myImage.jpg";// the path to the file name $res = geti

我有一个将图像上传到服务器的代码,但是在上传图像之前,代码通过检查其扩展名(允许的扩展名为“jpg”、“png”和“gif”)来检查上传的文件是否是图像,但是我刚刚意识到这不够安全,因为我可以轻松创建一个“file.php”并将其重命名为“file.png”这样代码就不会阻止上传文件。是否有其他方法检测文件是否为图像


更新:我正在使用$\u文件获取图像。

您可以这样做:

$image = "myImage.jpg";// the path to the file name

$res = getimagesize($image);

if($res === true)
{
 // this is an image
}
getimagesize()
是获取图像信息的函数。如果给定的文件名不是图像,则返回false,否则返回图像信息数组,如宽度和高度

如果要检查
$\u文件
超级数组中的图像,则应使用以下代码:

getimagesize($_FILES['file']['tmp_name'])

我假设您的文件输入名为“file”

您只需使用
getimagesize()


对于非图像的大小,它返回零。

您也可以这样检查
$\u FILES['file\u upload']['type']

例如:

 if($_FILES['file_upload']['type'] != 'image/png'){
       //message to inform the user
 }

使用此函数getimagesize($_Files[“name”]“tmp_name”)时,我收到警告:getimagesize(1):无法打开流:第40行的index.php中没有此类文件或目录,因为传递给该函数的地址不正确。它与函数无关,文件的URL不正确,因此PHP无法找到图像并抛出错误。那么$\u文件的正确URL是什么?等待更新答案代码正常,但当我创建一个带有文本“dsvsd”或“I get error getimagesize():Read error”的jpg文件时!但我认为这是来自浏览器,没有100%可靠的方法;不要用php执行.png文件(或者:只执行100%信任的代码)。