PHP If-Bedingung klappt nicht ganz ?!

wallcity

New Member
Hallo also ich habe ein Problem mit meinem Code also dieser ist folgender:

PHP:
/* so irgendwie soll es dann funktionieren */
if (
	($ext == "mp3") && 
	($_FILES["uploaded_file"]["size"] < ($file_size_m*1024)*1024) &&
	(
		$_FILES["uploaded_file"]["type"] == "audio/mpeg" or 
		$_FILES["uploaded_file"]["type"] == "audio/mpeg3" or 
		$_FILES["uploaded_file"]["type"] == "audio/x-mpeg-3"
	)
)
{}

/* so zumindest funktioniert es */
if (
	($ext == "mp3") && 
	($_FILES["uploaded_file"]["size"] < ($file_size_m*1024)*1024)
)
{}

Also was damit gemeint ist, ist dass $_FILES["uploaded_file"]["type"] halt eines dieser mime typen besitzen soll und halt mit in die If Bedingung passen soll, bitte helft mir mal ..

Dankschön im vorraus =)
 
Die Abfrage auf den Mimetype funktioniert nur, wenn der Browser diesen auch (korrekt) zur Verfügung stellt. Du könntest den Mime-Type aber über die PECL-Extension Fileinfo ermitteln.
 
Hallo,

Was steht denn in types drin ?
Klappt eine einzelne types IF Bedinung ?
evtl. Leerzeichen ? (trim)
 
Ich hatte es so probiert:

PHP:
if (
  	($ext == "mp3") && 
   	($_FILES["uploaded_file"]["size"] < ($file_size_m*1024)*1024) &&
   	($_FILES["uploaded_file"]["type"] == "audio/mpeg")
)

So ging es aber eine andere MP3 Datei ging halt nicht weil diese application/x-download ist warum auch immer, also muss ich halt irgendwie in der if Schleife halt festlegen, dass dieser halt durch verschiedene Mime Typen gecheckt wird.

MFG wallcity


p.s. wäre halt auch nice, wenn ihr ein paar Codebeispiele dazuposten könntet... =)
 
Last edited by a moderator:
Habe es halt jetzt so drin:

PHP:
if (
    	($ext == "mp3") && 
    	($_FILES["uploaded_file"]["size"] < ($file_size_m*1024)*1024) &&
    	(
        	($_FILES["uploaded_file"]["type"] == "audio/mpeg") || 
        	($_FILES["uploaded_file"]["type"] == "audio/mpeg3") || 
        	($_FILES["uploaded_file"]["type"] == "audio/x-mpeg-3") ||
			($_FILES["uploaded_file"]["type"] == "application/x-download")
    	)
)

Ist halt nicht die sauberste Art aber wenn die MP3 Datei diesen application/x-downoad mime typ hat, dann bleibt mir ja nix anderes möglich, oder?
 
Ermittel den Mimetype serverseitig, also so:
PHP:
$mimetype = mime_content_type($_FILES['uploaded_file']['tmp_name']);
if (
      ($ext == "mp3") && 
       ($_FILES["uploaded_file"]["size"] < ($file_size_m*1024)*1024) &&
       ($mimetype == "audio/mpeg")
)
mime_content_type ist übrigens als deprecated markiert, gut möglich, daß er mit PHP6 nicht mehr vorhanden ist. Dann mußt du mit der PECL-Extension Fileinfo den Mimetype ermitteln.
 
Ach ja, mehrere Mimetypen kannst du am einfachsten per Array abfangen:
PHP:
$allowedmimetypes = array("audio/mpeg","audio/mpeg3");
$mimetype = mime_content_type($_FILES['uploaded_file']['tmp_name']);
if (
      ($ext == "mp3") && 
       ($_FILES["uploaded_file"]["size"] < ($file_size_m*1024)*1024) &&
       (in_array($mimetype,$allowedmimetypes)
   )
Bei Bedarf packst du einfach nur die zusätzlichen Mimetypes ins Array mit rein.
 
Ja genau, halt das is ja nix anderes als das was ich schon hatte...
Halt $_FILES["uploaded_file"]["type"] für den Mime typ und dieser wird dann halt immer dann mit der Vorgabe verglichen. Als Array gehts auch sieht halt schöner aus =)

Naja super danke an euch alle, dann gehe ich ma schlafen, machts gut danke nochma =) :rolleyes:
 
Nur mit einem Unterschied zwischen deinem und meinem Beispiel:
$_FILES["uploaded_file"]["type"] <- kommt vom Browser (kann also falsch sein oder sogar ganz fehlen)
mime_content_type($_FILES['uploaded_file']['tmp_name']); <- ermittelt den Mimetype der hochgeladenen Datei erst auf dem Server (du mußt dich also nicht drauf verlassen, daß der Browser korrekt arbeitet)
 
Nur mit einem Unterschied zwischen deinem und meinem Beispiel:
$_FILES["uploaded_file"]["type"] <- kommt vom Browser (kann also falsch sein oder sogar ganz fehlen)
mime_content_type($_FILES['uploaded_file']['tmp_name']); <- ermittelt den Mimetype der hochgeladenen Datei erst auf dem Server (du mußt dich also nicht drauf verlassen, daß der Browser korrekt arbeitet)

Ja genau glaube das der Browser dann halt eventuell einen Fehler machen könnte bei der Erkennung, jop super danke für den Tipp =)
 
Back
Top