Привет всем. Я хочу установить на форм загрузить только разрешенных файлов. Почему такой код не получается?
<?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('Упс ошибка, неверный формат'
} ?>
Если вставить такой код вот так: <?php if(isset($_POST['upload'])){
//Список разрешенных файлов
$blacklist = array(".php", ".html",".exe",".bin", ".sh"
//Проверяем разрешение файла
foreach ($blacklist as $item) {
if(preg_match("/$item$/i",$_FILES['userfile']['name'])){
die('Упс ошибка, неверный формат'
} ?>
все работает ОК. НО список запрещенных много поэтому хочу установить , загрузить только белый список форматов. Помогите плиз!
<?php
//разрешенные форматы
$filetype = array(
'jpg',
'gif',
'png',
'jpeg');
$upfiletype = substr($_FILES['userfile']['name'], strrpos($_FILES['userfile']['name'], "." + 1);
if (!in_array($upfiletype, $filetype))
die('Такой формат запрещено загружать!');
?>
Расширение можно изменить и успешно залить исполняемый файл вместо картинки. Зачем такая защита нужна?
Используй getimagesize
Если файл действительно в формате GIF, JPEG, JPG, PNG, и getimagesize возвращает его пропорции, то, значит, это настоящий файл в формате GIF, JPEG, JPG, PNG.
khujand, Кинул тебе в личку готовый вариант