2011-05-15 81 views
1

我已经得到的if/else到位,以确保只有特定类型的音频都可以上传,但它似乎并没有被工作为其他文件类型(图像)过去使它我的上传表单。我的代码有什么问题?文件绕过文件类型选择在PHP

<?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.";} 
} 

回答

3

您需要编辑您的if条件。问题是,你评估“音频/ 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'))) 
+0

此外,通过浏览器提供的“类型”将最经常是不正确的;不要依赖它。 – Evert 2011-05-15 18:50:06

+0

@Evert这是真的。但是,现在,代码不会上传任何未接受的文件类型。 – AndersTornkvist 2011-05-15 18:53:46

+0

啊等等 || 意味着或在PHP? 是否有比我应该使用的类型更可靠的东西?什么可能导致它不正确? – John 2011-05-15 18:54:04