2015-02-28 6 views
0

Я делаю сайт, на котором вы можете загружать файлы. Я просто хочу, чтобы люди загружали файлы Word, Powerpoint, Excel, PDF и JPG. Поэтому я сделал это, если-заявление:Если заявление не работает PHP

$target_dir = "files/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$filename = basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
$fileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if file selected 
if (!isset($_FILES['fileToUpload']) || $_FILES['fileToUpload']['error'] == UPLOAD_ERR_NO_FILE) { 
    $msg = "No file selected. Try again."; 
    $uploadOk = 0; 

} elseif (file_exists($target_file)) { // does file already exist? 
    $msg = "File already exists."; 
    $uploadOk = 0; 

} elseif ($_FILES["fileToUpload"]["size"] > 10485760) { // filesize 
    $msg = "File too huge."; 
    $uploadOk = 0; 

// THE PROBLEM IS IN THE FOLLOWING STATEMENT 

} elseif ($fileType != "jpg" || $fileType != "doc" || $fileType != "docx" || $fileType != "ppt" || $fileType != "pptx" || $fileType != "xls" || $fileType != "xlsx" || $fileType != "pdf") { 
    $msg = "Filetype not allowed"; 
    $uploadOk = 0; 
} 

if ($uploadOk != 0) { 
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { 
     $msg = "File uploaded."; 
    } else { 
     $msg = "File not uploaded."; 
    } 

Однако, когда я загрузить JPG, PDF, PHP или любой другой, он всегда дает ошибку: Filetype не допускается. Что я делаю не так?

+0

FYI: Если вы еще не видели его, вы можете совершите тур здесь: http://stackoverflow.com/tour и посмотрите, как работает этот сайт! (Добро пожаловать на SO) – Rizier123

ответ

1

$fileType != "jpg" || $fileType != "doc" || $fileType != "docx" || $fileType != "ppt" || $fileType != "pptx" || $fileType != "xls" || $fileType != "xlsx" || $fileType != "pdf" всегда будет true. Вы хотите, чтобы оператор && вместо ||.

0

Вы должны использовать &&

} elseif ($fileType != "jpg" && $fileType != "doc" && $fileType != "docx" && $fileType != "ppt" && $fileType != "pptx" && $fileType != "xls" && $fileType != "xlsx" && $fileType != "pdf") { 
1

Не делайте ваши условия слишком сложными, просто используйте in_array(), как это:

} elseif (!in_array($fileType, array("jpg", "doc", "docx", "ppt", "pptx", "xls", "xlsx", "pdf"))) { 
    $msg = "Filetype not allowed"; 
    $uploadOk = 0; 
} 
Смежные вопросы