php验证文件格式
php验证文件格式方法一:判断文件的扩展名(不能识别文件伪装)操作思路:将文件的后缀和允许的后缀对比<body>
<?php
if(!empty($_POST)) {
$allow=array('.jpg','.png','.gif'); //允许的扩展名
$ext=strrchr($_FILES['face']['name'],'.');//上传文件扩展名
if(in_array($ext,$allow))
echo '允许上传';
else
echo '文件不合法';
}
?>
<form method="post" action="" enctype='multipart/form-data'>
<input type="file" name="face">
<input type="submit" name="button" value="上传">
</form>
</body>注意:比较扩展名不能防止文件伪装。
方法二:通过$_FIELS[]['type']类型(不能识别文件伪装)<body>
<?php
if(!empty($_POST)) {
$allow=array('image/jpeg','image/png','image/gif'); //允许的类别
$mime=$_FILES['face']['type'];//上传文件类型
if(in_array($mime,$allow))
echo '允许上传';
else
echo '文件不合法';
}
?>
<form method="post" action="" enctype='multipart/form-data'>
<input type="file" name="face">
<input type="submit" name="button" value="上传">
</form>
</body>注意:比较$_FIELS[]['type']不能防止文件伪装。
方法三:php_fileinfo扩展(可以防止文件伪装) 在php.ini中开启fileinfo扩展extension=php_fileinfo.dll注意:开启fileinfo扩展以后,就可以使用finfo_*的函数了
<body>
<?php
if(!empty($_POST)) {
//第一步:创建finfo资源
$info=finfo_open(FILEINFO_MIME_TYPE);
//var_dump($info); //resource(2) of type (file_info)
//第二步:将finfo资源和文件做比较
$mime=finfo_file($info,$_FILES['face']['tmp_name']);
//第三步,比较是否合法
$allow=array('image/jpeg','image/png','image/gif'); //允许的类别
echo in_array($mime,$allow)?'合法':'不合法';
}
?>
<form method="post" action="" enctype='multipart/form-data'>
<input type="file" name="face">
<input type="submit" name="button" value="上传">
</form>
</body>小结:验证文件格式有三种方法1、可以验证扩展名(不可以防止文件伪装)2、通过$_FILES[]['type']验证(不可以防止文件伪装)3、通过file_info扩展(可以防止文件伪装)
页:
[1]