Hallo Franky
Das PHP Script kann die Dateigröße erst ermitteln, wenn die Datei schon hochgeladen wurde, da es auf dem Server ausgeführt wird, wenn das Formular und damit die Datei vollständig hochgeladen ist.
Damit keine zu großen Dateien hochgeladen werden, kannst du nur hoffen, dass der Browser die Angabe
<input type="hidden" name="max_file_size" value="1000">
versteht. Eine andere Möglichkeit gibt es nicht. Um zu verhindern dass Dateien hochgeladen werden die keine jpg Dateien sind, kannst du mit JavaScript die Dateiendung überprüfen. Das Script müsste dann ausgeführt werden, nachdem man die Datei ausgewählt hat und bevor das Formular versand wird. Als Eventhandler sind dann sinnvoll onChange im input Tag oder onSubmit im form Tag, wobei ich die zweite Variante angenehmer finde. Das Script müsste also den Dateinamen lesen, indem es mit document.formularname.elementname.value darauf zugreift. Dann mit der Methode lastIndexOf() das letzte Vorkommen des Punktes ermitteln und mit der Methode substring() die Dateiendung vom Punkt bis zum Ende des Dateinamens ermitteln. Dann diesen String in Kleinbuchstaben umwandeln mit toLowerCase() und mit jpg und jpeg vergleichen. Ist eine ungewollte Datei angegeben, so kann man den Benutzer mit alert() darauf hinweisen und sollte das Versenden des Formulars verhindern, indem man den onSubmit Handler mit return false beendet. (onSubmit="return check()" und function check() { if(x!='jpg') return false; })
Es kann aber passieren, dass trotzdem eine ungewollte Datei gesandt wird. Diese wird temporär gespeichert und das PHP-Script muss entscheiden, ob es die Datei an einen sicheren Ort kopiert oder 'verfallen' lässt. Du musst also, wie im Beispiel auch kurz erwähnt, überprüfen ob die Dateigröße klein genug ist, ob der Mimetyp stimmt(siehe Beispiel) und, wie vorher mit JavaScript, nochmals überprüfen ob die Dateiendung erlaubt ist(dafür gibt es bei php sicher eine eigene Funktion). Obwohl bis hier eigentlich alle Fehleingaben berücksichtigt sein sollten, solltest du noch prüfen, ob es sich wirklich um ein Bild handelt. (Eine Datei mit der Endung .jpg muss nicht zwangsweise eine JPEG Datei sein.) Der Autor des Artikel hat auch gezeigt, wie das geht.
cu.Lukas