pdf、mp3的php文件类型
我有一个代码部分,用于检查:pdf、mp3的php文件类型,php,file-upload,Php,File Upload,我有一个代码部分,用于检查: ($\u文件[“fileToUpload”][“type”]=“image/gif”|$\u文件[“fileToUpload”][“type”]=“image/jpeg”|$\u文件[“fileToUpload”][“type”]=“image/png”) 我可以用什么替换“image/gif”来过滤pdf和MP3?A包括: 请不要只检查$\u文件['name']['type'],因为发送此信息的是浏览器,伪造信息非常容易,例如向文件中插入代码 为使其更安全,请使用
($\u文件[“fileToUpload”][“type”]=“image/gif”|$\u文件[“fileToUpload”][“type”]=“image/jpeg”|$\u文件[“fileToUpload”][“type”]=“image/png”)
我可以用什么替换“image/gif”来过滤pdf和MP3?A包括:
请不要只检查
$\u文件['name']['type']
,因为发送此信息的是浏览器,伪造信息非常容易,例如向文件中插入代码
为使其更安全,请使用函数进行MIME类型检查,尤其是mp3文件,它可能仅被识别为应用程序/octet流
请参阅
您可以编写更易于阅读的代码,如下所示:
$mime_filter = array(
'image/gif', 'image/jpeg', 'image/png',
'application/pdf',
'audio/mpeg', 'audio/mpeg3', 'audio/x-mpeg', 'audio/x-mpeg-3');
if (in_array($_FILES["fileToUpload"]["type"], $mime_filter)) {
// ...
这不完全是对你问题的回答,而是一个旁白: 检查
类型
值不会告诉您任何事情。(这里有许多类似的问题,所以答案都指出了这一点——请查看右侧的“相关”侧栏)。浏览器可以配置为发送任何指定文件扩展名的任何内容,因此如果使用此值,实际上就是盲目信任用户输入(错误)
最好只是从文件名中提取扩展名,然后用它做你想做的事情
更新:我没料到会被提升太多,但就目前情况而言,我觉得我应该提供更多信息
如果您对仅使用文件扩展名不满意,可以使用usoban所说的fileinfo
函数来获取文件的MIME类型。不幸的是,这仅在PHP5.3及更高版本上可用
提供了一个更兼容的选项作为解决方案
在这里(虽然我发现给出的答案有点过火,但从任何标准来看都是好的)。好吧,mime_content_type()函数甚至在PHP5之前就存在了,它提供了与FileInfo extension相同的功能,但已经被弃用(不久前:)+1,因为这是一个完全正确的答案。不过,它可能需要一些扩展。
$mime_filter = array(
'image/gif', 'image/jpeg', 'image/png',
'application/pdf',
'audio/mpeg', 'audio/mpeg3', 'audio/x-mpeg', 'audio/x-mpeg-3');
if (in_array($_FILES["fileToUpload"]["type"], $mime_filter)) {
// ...