$filename=$_FILES['file']['name'];
$type=$_FILES['file']['type'];
$extension=strtolower(substr($filename, strpos($filename, '.')+1));
$size=$_FILES['file']['size'];
if(($extension=='jpg' || $extension=='jpeg') && ($type!='image/jpg' || $type!='image/jpeg')){...
我有一个输入文件,可以让用户只上传jpg / jpeg图像,我有检查类型,扩展名,大小。
但是我不确定如何检查用户是否更改扩展名。(例如abc.php - > abc.jpg)
在将用户的图像保存到服务器之前需要检查的其他内容吗?
答案 0 :(得分:3)
您可以使用exif_imagetype()
http://www.php.net/manual/en/function.exif-imagetype.php
exif_imagetype()读取图像的第一个字节并检查它 签名。
答案 1 :(得分:2)
我建议使用finfo:
<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
/* outputs:
text/html
image/gif
application/vnd.ms-excel
*/
?>
从php文档站点获取的示例。 在php文档页面http://www.php.net/manual/en/function.finfo-file.php
上查看更多信息答案 2 :(得分:0)
@ Fabian的回答看起来很适合检查文件的类型。虽然我建议采用不同的方法来获取文件的扩展名。
考虑一个名为stack.overflow.jpg
的文件。
$filename = 'stack.overflow.jpg';
// With your code $extension = 'overflow.jpg'
$extension=strtolower( substr( $filename, strpos( $filename, '.' ) +1 ) );
// With pathinfo() $extension = 'jpg'
$extension = pathinfo( $filename, PATHINFO_EXTENSION );
考虑使用pathinfo()
获取文件扩展名:http://www.php.net/manual/en/function.pathinfo.php