Hallo Community!
Leider konnte mir die Suchfunktion nicht weiterhelfen, deswegen bin ich mal so frei und mache einen neuen Faden auf!
Folgendes Problem:
Ich habe ein Datei-Upload-Feld, der User wählt eine Bild-Datei aus, die anschließend auf den Server geladen wird. Das funktioniert auch soweit einwandfrei!
Jetzt möchte ich aber BEVOR das Bild hochgeladen wird, eine Eingabeüberprüfung einbauen, die prüft, ob das Bild, welches der User ausgewählt hat, zu groß ist, ob es überhaupt ein Bild ist bzw. ob der User überhaupt eine Eingabe gemacht hat...
Meine Idee war, das mit einem SWITCH/CASE zu machen...
Mit diesem Codeschnipsel funktioniert das auch, zumindest zeigt er mir immer die korrekte Fehlermeldung an. Ist das File zu groß, wechselt PHP in den CASE 1, macht der USER keine Eingabe, wechselt das Skript in CASE 4 und wenn das File kein Bild ist, dann springt PHP in die vorgeschaltete IF-Schleife... also alles perfekt.
Wenn ich aber jetzt auch den CASE 2 einen Header verpasse, also:
...dann funktioniert das Ganze schon nicht mehr? Wenn die Datei zu groß ist, sagt mir PHP, der User hätte keine Datei ausgewählt, d.h. PHP wechselt eindeutig in die falsche Schleife, nämlich in CASE 4 statt in den korrekten CASE 1 - doch blieb der Code dieser beiden CASES unangetastet.
Warum passiert das und wie bekomme ich das "die()" mit einem "header()" ersetzt, ohne das dieser Fehler auftritt? Ich bin wirklich am Ende, weil ich keinen Fehler im Quelltext sehen kann und mir der Fehler auch unlogisch erscheint... Ist es vielelicht sogar ein Bug? Oder bin ich nur zu dumm?
Danke für eure Antworten,
Gruß,
Stefan
Leider konnte mir die Suchfunktion nicht weiterhelfen, deswegen bin ich mal so frei und mache einen neuen Faden auf!
Folgendes Problem:
Ich habe ein Datei-Upload-Feld, der User wählt eine Bild-Datei aus, die anschließend auf den Server geladen wird. Das funktioniert auch soweit einwandfrei!
PHP-Code:
<form name="upload" enctype="multipart/form-data" action="<? echo $_SERVER["PHP_SELF"]; ?>" method="post">
<input name="datei" type="file">
<input type="image" src="images/button_upload.jpg" name="upload" value="Upload">
</form>
Meine Idee war, das mit einem SWITCH/CASE zu machen...
PHP-Code:
if (substr($_FILES["datei"]["type"], 0, 5) != 'image')
{
header("Location: ".$_SERVER["PHP_SELF"]."?fehler=format");
}
switch ($_FILES["datei"]["error"])
{
case 0: break; // kein fehler
case 1: header("Location: ".$_SERVER["PHP_SELF"]."?fehler=size1");
case 2: die();
case 3: header("Location: ".$_SERVER["PHP_SELF"]."?fehler=transfer");
case 4: header("Location: ".$_SERVER["PHP_SELF"]."?fehler=leer");
}
Wenn ich aber jetzt auch den CASE 2 einen Header verpasse, also:
PHP-Code:
case 2: header("Location: ".$_SERVER["PHP_SELF"]."?fehler=size2");
Warum passiert das und wie bekomme ich das "die()" mit einem "header()" ersetzt, ohne das dieser Fehler auftritt? Ich bin wirklich am Ende, weil ich keinen Fehler im Quelltext sehen kann und mir der Fehler auch unlogisch erscheint... Ist es vielelicht sogar ein Bug? Oder bin ich nur zu dumm?
Danke für eure Antworten,
Gruß,
Stefan
Kommentar