Hallo dedlfix.
if (preg_match('~.jpg|jpeg|.gif|.png~i', substr($_FILES['userfile']['name'], -4))
Mit der if-Abfrage überprüfe ich Format und Größe der Datei und reagiere entsprechend.Mit dem ersten Teil der Bedingung prüfst du kein Format sondern nur einen Teil des Dateinamens. Wenn du Bilddateien erwartest, solltest du getimagesize() darauf anwenden und prüfen, ob ein Array mit Daten oder false (nebst Warnung) zurückgeliefert wird.
Wieso ziehst du getimagesize() dieser Methode mit preg_match vor?
Suche die Ursache in den Inhalten der Variablen. Lass dir deren Inhalt ausgeben und vergleiche das Tatsächliche mit dem Erwarteten.
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>">
Diese Angabe ist überflüssig, da sich sowieso kein Client dran hält.
Hmm, ich bin mir nicht sicher. Auf deinen Rat hin habe ich festgestellt, dass, wenn <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>">
im Formular vorhanden ist, bei zu großen Dateien echo $_FILES['userfile']['size'];
null anstatt der tatsächlichen Größe ausgibt. Verzichte ich auf das hidden-Feld, wird die tatsächliche Größe ausgegeben und mein upload-Script funktioniert nun auch wie gewünscht.
Wie erklärst du dir besagtes Verhalten?
Danke dir.
MfG, Kungschu.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.