ОБСУЖДЕНИЕ

Upload только разрешенных формат

6 сообщений1 просмотровЗакрыта
#1
Привет всем. Я хочу установить на форм загрузить только разрешенных файлов. Почему такой код не получается?
<?PHP
if(isset($_POST['upload'])){
//Список разрешенных файлов
$whitelist = array(".gif", ".jpeg",".jpg",".mp3", ".png");

//Проверяем разрешение файла
foreach ($whitelist as $item) {
if(preg_match("/$item\$/i",$_FILES['userfile']['name'])){
die('Упс ошибка, неверный формат'
}

Если вставить такой код вот так: if(isset($_POST['upload'])){
//Список разрешенных файлов
$blacklist = array(".php", ".html",".exe",".bin", ".sh");

//Проверяем разрешение файла
foreach ($blacklist as $item) {
if(preg_match("/$item\$/i",$_FILES['userfile']['name'])){
die('Упс ошибка, неверный формат'
} все работает ОК. НО список запрещенных много поэтому хочу установить , загрузить только белый список форматов. Помогите плиз!
#2
khujand,
PHP
if(isset($_POST['upload'])){
//Список разрешенных файлов
$whitelist = array(".gif", ".jpeg",".jpg",".mp3", ".png"); 

//Проверяем разрешение файла
foreach ($whitelist as $item) {
if(!preg_match("/$item\$/i",$_FILES['userfile']['name'])){
die('Упс ошибка, неверный формат'
}

#3
Karayazi, Я так попробовал, не работает
#4
khujand,
PHP
if(isset($_POST['upload'])){
//Список разрешенных файлов
$whitelist = array(".gif", ".jpeg",".jpg",".mp3", ".png"); 

//Проверяем разрешение файла
foreach ($whitelist as $item) {
if(!preg_match("/$item$/si",$_FILES['userfile']['name'])){
die('Упс ошибка, неверный формат'
}
#5
<?php
if (isset($_FILES['upload'])) {
$filename = basename($_FILES['upload']['name']);
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$whitelist = array(".gif", ".jpeg",".jpg",".mp3", ".png");

if (!in_array($ext, $whitelist)) {
die('Error');
}
}
#6
Тему закрыл khujand!
Причина: Спасибо