Manu3l: for-Schleife

Beitrag lesen

Hallo,

ich habe eine Frage zur for-Schleife.

Ich habe mir für nur freigegebene Benutzer eine Upload-Seite gescriptet. Es funktioniert auch soweit alles, nur meine for-Schleife macht irgendwie keine richtige Schleife...

Am Anfang habe ich mehrere Abfragen, (ob ein neues Album angelegt wurde, Dateien ausgewählt wurden usw.) dann beginnt das eigentliche Script zum Hochladen für mehrere Dateien.

// Anzahl Dateien zählen
$countfiles = count($_FILES['file']['name']);
		
// Loop aller Dateien durchführen
for($i=0;$i<$countfiles;$i++)
{
	$filename = $_FILES['file']['name'][$i];
	$zugelassenedateitypen = array("image/png", "image/jpeg", "image/gif", "application/x-zip-compressed"/*, "application/octet-stream"*/);

	if ( ! in_array( $_FILES['file']['type'][0] , $zugelassenedateitypen ))
	{
	  echo "<p>Jedoch ist der Dateityp NICHT zugelassen! Aus diesem Grund konnte nichts hochgeladen werden!</p>";
  }
	else
	{
		// Test ob Dateiname in Ordnung
		$filename = dateiname_bereinigen($filename);

		if ( $_FILES['file']['name'][0] <> '' )
		{				
			// Datei von Temp-Ordner in angegebenen Ordner verschieben
			move_uploaded_file($_FILES['file']['tmp_name'][$i],'uploads/'.$ordner.'/'.$filename);
			
			echo "<p>Hochladen war erfolgreich: ";
			echo '<a href="uploads/' .$ordner.'/'.$filename .'">';
			echo 'uploads/'.$ordner.'/'.$filename;
			echo '</a>';
		}
		else
		{
			echo "<p>Dateiname ist nicht zulässig</p>";
		}			
	}
} 

"dateiname_bereinigen" ist meine Funktion, die festlegt, ob Umlaute, Leerzeichen usw. in der Datei sind und ändert diese gegebenenfalls auch ab. Dies funktioniert auch mit zwei oder mehr Dateien.

"$zugelassenedateitypen" prüft, ob es eine nicht von mir festgelegte Datei ist. (z.B. .PHP, .doc usw.) Leider prüft er dies nur bei der ersten Datei, was auch funktioniert, aber sobald ich zwei oder mehr Dateien hochladen möchte, führt er für die kommenden Dateien diese Prüfung nicht mehr aus und läd z.B. eine PHP-Datei auf den Server.

Meine for-Schleife sollte aber doch jedes mal greifen und die Dateiprüfung durchführen. Oder habe ich da irgendeinen Denkfehler?

Danke!

Manuel