我正在编写图像上传脚本。我添加了很多东西,例如存储外部webroot并通过php脚本等进行访问。我读过的一件事是检查文件是上传而不是图像。例如。停止myimage.php.jpeg
我写了下面的代码来检查它是一个图像文件。这是检查此文件是否具有图像名称的最佳方法吗?
$imagename= $_FILES['myimage']['name'];
//check there is only one fullstop in the imagename
if (substr_count($imagename,".")===1){
$imagesuffix = substr($imagename, strpos($imagename, ".") + 1);
//if image type is not a particular type of image
if($imagesuffix != "jpg"|| $imagesuffix != "png"||$imagesuffix != "jpeg"||$imagesuffix != "gif"){
echo"image filename is valid";
}
else{
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
}
}
else{
echo"this filename is invalid";
}
答案 0 :(得分:0)
如果您只允许上传图像文件,则必须查看文件内容。
<?php
$image = 'image_file_to_test.png';
if (($imageInfo = getimagesize($image, $jpegInfo)) === FALSE)
die('Not an image.');
// OR
if (($imageType = exif_imagetype($image)) === FALSE)
die('Not an image');
如果需要,可以检查$imageInfo
(docs)或$imageType
(docs)以确定图像格式。请注意,exif_imagetype()
是两者中较快的一个,但它告诉您的信息不如getimagesize()
。