Помощь Contact Form 7 - чтобы прикреплялись любые форматы файлов

Domme

Создатель
Регистрация
23 Мар 2016
Сообщения
45
Реакции
4
Здравствуйте.

В плагине прикрепляются строго файлы по списку типов, нашел что это вот такие:
Допустимые типы файлов: jpg, jpeg, png, gif, pdf, doc, docx, ppt, pptx, odt, avi, ogg, m4a, mov, mp3, mp4, mpg, wav, and wmv.

Требуется прием помимо этого всех типов архивов, а также желательно вообще всех типов файлов. Можно ли както из CF7 убрать контроль типа файлов или менять список допустимых?

Спасибо.
 

iBasher

Постоялец
Регистрация
11 Авг 2013
Сообщения
71
Реакции
31
Нашел участок кода, отвечающий за это.
/modules/file.php [142]
Конечно проще всего там дописать нужные тебе типы файлов, т.к. иначе нужно будет переписать всю функцию.
 

Domme

Создатель
Регистрация
23 Мар 2016
Сообщения
45
Реакции
4
строго говоря, прописать типы файлов проблемы нет через саму админку, такая функция заложена. Просто беда в том, что например дизайнерских программ десятки, а типов файлов сотни. Даже навскидку сложно вспомнить, и создаваться список будет годами проб и ошибок и нахождения заковыристых клиентов. И проще просто убрать проверку на список чтобы принимать любой вообще файл. За такую доработку подозреваю спасибо скажут десятки вебмастеров.

И она (сверка со списком) гдето в этом файле, да

в этих вот строках:

/* Validation + upload handling filter */

add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 2 );

function wpcf7_file_validation_filter( $result, $tag ) {
$tag = new WPCF7_Shortcode( $tag );

$name = $tag->name;

$file = isset( $_FILES[$name] ) ? $_FILES[$name] : null;

if ( $file['error'] && UPLOAD_ERR_NO_FILE != $file['error'] ) {
$result['valid'] = false;
$result['reason'][$name] = wpcf7_get_message( 'upload_failed_php_error' );
return $result;
}

if ( empty( $file['tmp_name'] ) && $tag->is_required() ) {
$result['valid'] = false;
$result['reason'][$name] = wpcf7_get_message( 'invalid_required' );
return $result;
}

if ( ! is_uploaded_file( $file['tmp_name'] ) )
return $result;

$allowed_file_types = array();

if ( $file_types_a = $tag->get_option( 'filetypes' ) ) {
foreach ( $file_types_a as $file_types ) {
$file_types = explode( '|', $file_types );

foreach ( $file_types as $file_type ) {
$file_type = trim( $file_type, '.' );
$file_type = str_replace( array( '.', '+', '*', '?' ),
array( '\.', '\+', '\*', '\?' ), $file_type );
$allowed_file_types[] = $file_type;
}
}
}

$allowed_file_types = array_unique( $allowed_file_types );
$file_type_pattern = implode( '|', $allowed_file_types );

$allowed_size = 1048576; // default size 1 MB

if ( $file_size_a = $tag->get_option( 'limit' ) ) {
$limit_pattern = '/^([1-9][0-9]*)([kKmM]?[bB])?$/';

foreach ( $file_size_a as $file_size ) {
if ( preg_match( $limit_pattern, $file_size, $matches ) ) {
$allowed_size = (int) $matches[1];

if ( ! empty( $matches[2] ) ) {
$kbmb = strtolower( $matches[2] );

if ( 'kb' == $kbmb )
$allowed_size *= 1024;
elseif ( 'mb' == $kbmb )
$allowed_size *= 1024 * 1024;
}

break;
}
}
}

/* File type validation */
 

iBasher

Постоялец
Регистрация
11 Авг 2013
Сообщения
71
Реакции
31
Просто дело в том, что это ограничение вообще введено по SECURITY reason. Я могу убрать проверку, но любой человек сможет просто залить свой вредоносный файлик, что ну прямо ДЫРИЩА в безопасности
 

iBasher

Постоялец
Регистрация
11 Авг 2013
Сообщения
71
Реакции
31
Кстати, попробуйте по-быстрому закомментить вот это, что выйдет?

add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 2 );
 

Domme

Создатель
Регистрация
23 Мар 2016
Сообщения
45
Реакции
4
залить свой вредоносный файлик
Дык там же вроде как - файлик попадает в темпорари и неисполняясь пересылается, и затем удаляется.

Или так можно навредить сайту всё равно? Ну тоесть - если сайту безвредно то пускай. Отправка вирусни на емейлы через форму поощряется

Сейчас не откомменчу, позднее. Спасибо за подсказку, попробую конечно. По результатам отпишу. Но не в hot time сайта конечно)
 

iBasher

Постоялец
Регистрация
11 Авг 2013
Сообщения
71
Реакции
31
Дык там же вроде как - файлик попадает в темпорари и неисполняясь пересылается, и затем удаляется.

Или так можно навредить сайту всё равно? Ну тоесть - если сайту безвредно то пускай. Отправка вирусни на емейлы через форму поощряется

Сейчас не откомменчу, позднее. Спасибо за подсказку, попробую конечно. По результатам отпишу. Но не в hot time сайта конечно)
Отпишешь. Даже если это поможет, нужно будет ввернуть функционал ограничения по размеру, т.к. это потенциально может навредить и сайту
 

Domme

Создатель
Регистрация
23 Мар 2016
Сообщения
45
Реакции
4
по размеру да, именно по размеру то критично. Люди очень талантливые встречаются, гигабайты для них не проблема. Да и друзья не постесняются трафик сразу убить
 

iBasher

Постоялец
Регистрация
11 Авг 2013
Сообщения
71
Реакции
31
по размеру да, именно по размеру то критично. Люди очень талантливые встречаются, гигабайты для них не проблема. Да и друзья не постесняются трафик сразу убить
Ну как минимум PHP_max_upload_чегототам тоже ограничивает, но это нужно экспериментальным путём выяснять
 

sunset4myval

Писатель
Регистрация
30 Янв 2019
Сообщения
5
Реакции
0
Нашел участок кода, отвечающий за это.
/modules/file.php [142]
Конечно проще всего там дописать нужные тебе типы файлов, т.к. иначе нужно будет переписать всю функцию.
Подскажите плз, где именно располагается этот участок кода и как его правильно поменять (с добавлением расширений под эксель файлы xlx, xlsx и txt)?
 
Сверху