Hey allemaal ik heb een vraagje over een upload script dat werkt met mp3 bestandjes

in chrome werkt alles perfect het bestandje wordt geupload en wordt geinsert in de database

maar in alle andere browsers krijg ik het bericht "Extension not allowed" terwijl het exact hetzelfde bestand is.

dit is de code



<?php

require_once 'mysql.php';

	$result = mysql_query("SELECT * FROM Songs");
	$num_rows = mysql_num_rows($result);
	


	$error = 0;
	

	$songnumber = $num_rows +=1;
	
$songname = '';

if ((($_FILES["file"]["type"] == "audio/mp3") || ($_FILES["file"]["type"] == "audio/mp3")) && ($_FILES["file"]["size"] < 21000000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "";//another echo to display after upload is complete
 
 $query1 = mysql_query("SELECT * FROM Songs WHERE Songname = '". $_FILES["files"]["name"] .""); 
 
 if($query1 != '') {
	$error +=1;
 }
 
    if (file_exists("../songs/" . $_FILES["file"]["name"]) || $error !=0)
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "../songs/" . $_FILES["file"]["name"]);
//Below shows the link for the mp3

	$songname = $_FILES["file"]["name"];

	mysql_query("INSERT INTO Songs (Songname, Songnumber) VALUES ('$songname', '$songnumber')");
	
      echo "Your song has been uploaded <a href=\"../index.php\">Click here</a> to go back";
      }
    }
  }
else
  {
  echo "Extension not allowed"; //Error message here if it's to big or wrong extension
  }
?>

Hoi Niels,

PHP draait op de server, dus is niet browser afhankelijk. Laat het gedeelte van <form> tot </form> eens zien.

Heb je in de form tag wel enctype="multipart/form-data" meegegeven?
bedankt voor de reactie frank dit is de form die ik gebruik en ik gebruike de enctype



<form action="phpfiles/upload_file.php" method="post" enctype="multipart/form-data">
<input id="upload" type="file" name="file" id="file" />

<input id="button" type="submit" name="submit" value="Upload" />
</form>


Niels op regel twee staat twee keer een id attribute, en dat mag natuurlijk niet!
oh ik zie het , wat een stomme fout ik zal het even aanpassen heeft dit ook betrekking tot de werking van het script?
Nee, is alleen browserafhankelijk. Je checkt op MIME-type, en die kunnen per browser/OS anders zijn. Je kan beter controleren op de extensie, door bijv end(explode('.', $_FILES['file']['name'])) te doen. Dan kun je controleren of het bestand eindigt op .mp3 bijv. Dan nog zou je eigenlijk wel moeten controleren of het daadwerkelijk een MP3 bestand is, anders kan men ook gewoon PHP in een bestand plaatsen, als bijv. test.mp3 opslaan en vervolgens proberen uit te voeren op de server..
Chris - op 08/08/2013 09:59:26
... gewoon PHP in een bestand plaatsen, als bijv. test.mp3 opslaan en vervolgens proberen uit te voeren op de server..


Ik veronderstel dat dit in principe geen probleem mag geven; .mp3 bestanden worden niet uitgevoerd als php.

Maar ja, als de instellingen zo zijn dat willekeurige extensies toch worden uitgevoerd als php ... dan zit je natuurlijk wel met een probleem.

:) Tenzij je het bijv. in een andere pagina kan includen. Bijvoorbeeld een index.php?pagina= systeem. Als die niet goed is beveiligd en je dus bestanden kan includen, kan dat op die manier..
ja; dat soort scripters zal ook wel nog rondlopen
ja inderdaad dat is niet wat ik wil , maar het enigste wat dus het uploaden tegen houdt in firefox is die check in de php , alles werkt naar behoren maar krijg telkens de extension not allowed error als het uploaden klaar is. maar hij upload niks.
Kan je voorlopig dit doen:
<?php
echo "Extension not allowed: " . $_FILES["file"]["type"]; // in jouw post lijn 53
?>

Dan kan je zien wat er gebeurt. Misschien verschijnt "audio/mp3" in hoofdletters, of zo.
Nu ja ... dan zie je het

Reageren