如果在 Contact Form 7 中上传的文件是二进制文件则阻止
Block if uploaded file is Binary in Contact Form 7
有人可以帮助阻止联系表 7 中的二进制文件吗
也就是说,如果 game.exe 被重命名为 game.docx 并上传,那么它必须被阻止
到目前为止,我已尝试在 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 === 'your-file') {
$contentType = mime_content_type($_FILES[$tag->name]['tmp_name']);
if ($contentType !== 'application/docx' && $contentType !== 'application/pdf' && $contentType !== 'application/doc'&& $contentType !== 'application/rtf') {
$result->invalidate($tag, 'This file type is not supported');
}
}
return $result;
}
这允许我上传 pdf 文件并检查 pdf 是否为二进制和块。但在 rtf、doc 和 docx 中它不起作用
这是因为您正在检查错误的 MIME 类型。
.doc: application/msword
.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document
有人可以帮助阻止联系表 7 中的二进制文件吗 也就是说,如果 game.exe 被重命名为 game.docx 并上传,那么它必须被阻止
到目前为止,我已尝试在 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 === 'your-file') {
$contentType = mime_content_type($_FILES[$tag->name]['tmp_name']);
if ($contentType !== 'application/docx' && $contentType !== 'application/pdf' && $contentType !== 'application/doc'&& $contentType !== 'application/rtf') {
$result->invalidate($tag, 'This file type is not supported');
}
}
return $result;
}
这允许我上传 pdf 文件并检查 pdf 是否为二进制和块。但在 rtf、doc 和 docx 中它不起作用
这是因为您正在检查错误的 MIME 类型。
.doc: application/msword
.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document