файлы в обход выбора типа файла в php - PullRequest
1 голос
/ 15 мая 2011

У меня есть if / else, чтобы убедиться, что можно загружать только определенные типы аудио, но, похоже, он не работает, так как другие типы файлов (изображения) делают это после моей формы загрузки. Что не так с моим кодом?

<?php 

 if($_POST['submit']=="in_mp3") 

{ 
$_FILES['file']['name'] = str_replace (" ", "", $_FILES['file']['name']);
if ($_FILES['file']['name'] != "") { 
        if (($_FILES['file']['type'] == "audio/mpeg" or "audio/ogg") || ($_FILES['file']['type'] == "application/force-download")) { 
            if ($_FILES["file"]["size"] < 6097152) {             
                    move_uploaded_file($_FILES["file"]["tmp_name"], "sound/" . $_FILES["file"]["name"]); 
                       echo "File has been stored in your uploads directory.";} 
else { echo "Please upload a file that is under 5 mb!";} 
} else { 
    echo "Please upload a mp3 or ogg file!"; 
    exit;} 
} else { echo "Please enter a file.";} 
} 

1 Ответ

3 голосов
/ 15 мая 2011

Вам необходимо отредактировать ваше if условие. Проблема в том, что вы оцениваете «audio / ogg», который не равен «», и, следовательно, ваше if условие всегда выполняется. Попробуйте:

if ($_FILES['file']['type'] == "audio/mpeg" || $_FILES['file']['type'] == "audio/ogg" || $_FILES['file']['type'] == "application/force-download") {

Вы также можете проверить расширение файла:

if (in_array(end(explode(".", $_FILES['file']['name'])), array('mpg','mpeg', 'm2v', 'mp2', 'mp3', 'ogv', 'oga', 'ogx', 'ogg', 'spx')))
...