• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь 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 убрать контроль типа файлов или менять список допустимых?

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

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

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

/* 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 */
 
Просто дело в том, что это ограничение вообще введено по SECURITY reason. Я могу убрать проверку, но любой человек сможет просто залить свой вредоносный файлик, что ну прямо ДЫРИЩА в безопасности
 
Кстати, попробуйте по-быстрому закомментить вот это, что выйдет?

add_filter( 'wpcf7_validate_file', 'wpcf7_file_validation_filter', 10, 2 );
add_filter( 'wpcf7_validate_file*', 'wpcf7_file_validation_filter', 10, 2 );
 
залить свой вредоносный файлик
Дык там же вроде как - файлик попадает в темпорари и неисполняясь пересылается, и затем удаляется.

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

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

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

Сейчас не откомменчу, позднее. Спасибо за подсказку, попробую конечно. По результатам отпишу. Но не в hot time сайта конечно)
Отпишешь. Даже если это поможет, нужно будет ввернуть функционал ограничения по размеру, т.к. это потенциально может навредить и сайту
 
по размеру да, именно по размеру то критично. Люди очень талантливые встречаются, гигабайты для них не проблема. Да и друзья не постесняются трафик сразу убить
 
по размеру да, именно по размеру то критично. Люди очень талантливые встречаются, гигабайты для них не проблема. Да и друзья не постесняются трафик сразу убить
Ну как минимум PHP_max_upload_чегототам тоже ограничивает, но это нужно экспериментальным путём выяснять
 
Нашел участок кода, отвечающий за это.
/modules/file.php [142]
Конечно проще всего там дописать нужные тебе типы файлов, т.к. иначе нужно будет переписать всю функцию.
Подскажите плз, где именно располагается этот участок кода и как его правильно поменять (с добавлением расширений под эксель файлы xlx, xlsx и txt)?
 
Назад
Сверху