Ограничение типов отправляемых файлов средствами API
Материал из Umicms
Версия от 09:44, 29 марта 2014; Alexei (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.5''' Если необходимо задать уникальный список типов файлов, котор…»)
Актуально для версии 2.9.5
Если необходимо задать уникальный список типов файлов, которые можно отправлять через форму обратной связи пользователям, то это можно сделать несколькими путями. В данной статье мы рассмотрим реализацию данного функционала с помощью API.
%webforms checkExtension()% — проверяет расширение файла.
Для применения этого макроса скопируйте код макроса в файл /classes/modules/webforms/__custom.php.
Код макроса
public function checkExtension() {
$name = array_shift($arr = $_FILES['data']['name']['new']);
$extension = strtolower(substr($name, strrpos($name, '.') + 1));
$allowedFileTypes = array(
'txt', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pps', 'ppsx', 'odt', 'sxw', 'ods', 'odg', 'pdf', 'csv', 'html', 'js',
'tpl', 'xsl', 'xml', 'css', 'zip', 'rar', '7z', 'tar', 'gz', 'tar.gz', 'exe', 'msi', 'rtf', 'chm', 'ico', 'psd', 'flv', 'mp4',
'swf', 'mp3', 'wav', 'wma', 'ogg', 'aac', 'jpg', 'jpeg', 'gif', 'bmp', 'png'
);
if (in_array($extension, $allowedFileTypes)) {
if ($oWebformsMdl = cmsController::getInstance()->getModule("webforms")) {
$oWebformsMdl->send($_POST, $_FILES);
}
}
$this->errorNewMessage(getLabel('errors_wrong_file_extension'));
}
Теперь в файле classes/modules/i18n.php необходимо добавить строку
"errors_wrong_file_extension" => "Запрещенный тип файла"
После этого осталось только в форме обратной связи прописать
action="{$lang-prefix}/webforms/checkExtension/"
вместо
action="{$lang-prefix}/webforms/send/"