这是我的问题:
在由Contact Form 7制作的表单中,我允许下载pdf,jpg或jpeg文件类型。 我担心的是扩展控制未完全执行。
实际上,如果我将“ test.exe”文件命名为“ text.jpg”,则可以提交表单,并且没有错误...
是否有解决方案可以测试? (例如通过哑剧测试)
如果是的话,我应该在哪里实现代码?
在此先感谢您的回答,对不起我的英语(我是法语...)
答案 0 :(得分:0)
我在您的论坛中为您找到了一些有用的答案: PHP Uploading files - image only checking
尝试这个答案:
<?php
function isImage($img){
return (bool)getimagesize($img);
}
?>
由杰里米·哈里斯(Jeremy Harris)发布。
这是getimagesize()的手册 http://php.net/manual/pl/function.getimagesize.php
答案 1 :(得分:0)
Wordpress使用过滤器upload_mimes
控制站点范围内允许使用的MIME类型。您可以通过在wp-includes / functions.php中添加以下内容来自定义此列表:
function safe_mime_types($mime_types){
unset($mime_types['exe']); //remove .exe support
return $mime_types;
}
add_filter('upload_mimes', 'safe_mime_types', 1, 1);
您还可以添加可接受的MIME类型:
function safe_mime_types($mime_types){
$mime_types['svg'] = 'image/svg+xml'; //add .svg support
unset($mime_types['exe']);
return $mime_types;
}
add_filter('upload_mimes', 'safe_mime_types', 1, 1);
答案 2 :(得分:0)
对于那些有相同问题的人,这里是我的解决方案:
在wp-includes/functions.php
中:
add_filter('wpcf7_validate_file*', 'cf7_custom_file_validation', 10, 2);
add_filter('wpcf7_validate_file', 'cf7_custom_file_validation', 10, 2);
function cf7_custom_file_validation ($result, $tag) {
if ($tag->name === 'file-586') {
$contentType = mime_content_type($_FILES[$tag->name]['tmp_name']);
if ($contentType !== 'image/png' && $contentType !== 'image/jpeg' && $contentType !== 'application/pdf') {
$result->invalidate($tag, 'Ce type de fichier n\'est pas supporté');
}
}
return $result;
}