Tom: Fileupload-Scripte sind gefährlich!

Beitrag lesen

Hello,

Also der Fehler (error 4) tritt nur auf wenn ich keine Datei ausgewählt habe. Logisch.
Das Dateifeld des Affenformulars war nach einer Fehlermeldung wieder leer. Hatte ich vergessen/übersehn.

Wenn ich eine Datei auswähle erhalte ich bei z.B. einem Bild:

Array (
    [file_input] => Array (
        [name] => wine.jpg
        [type] => image/jpeg
        [tmp_name] => /var/www/web30/phptmp/phpRcickf
        [error] => 0
        [size] => 65614
    )
)

Woran DU siehst, dass Du als erstes den Error auswerten solltest, bevor Du irgendetwas anderes machst:

if(isset($_FILES[$file_element_name]['error']) and $_FILES[$file_element_name]['error'] === 0)
    {
        ## File hochgeladen, weitermachen
        ## z.B. Prüffunktion aufrufen
        ## ...
    }
    else
    {
        ## Fehler aufgetreten
    }

Und achte bitte darauf, dass Dir niemand PHP-Files auf den Server hochladen kann. Da die aber je nach System unterschiedlich heißen können (Endungen php, phps, phtml, usw.) ist es ratsam, das Verzeichnis, in dem die Files gelagert werden, entweder ausßerhalb der Document Root anzulegen, oder aber den Parser für dieses Verzeichnis auszuschalten.

Außerdem musst Du darauf achten, dass Dir niemand eine .htaccess oder eine php.ini (beim CGI) in ein per http erreichbares Verzeichnis hochläd. Das geht immer dann besonders einfach, wenn man Dateien unter dem vom Client gelieferten Namen abspeichert.

Deshalb solltest Du sicherstellen, dass Du den Namen genauestens untersuchst, wenn Du Dateien unter einem vom Client geleiferten Namen abspeicherst. Es könnte sich auch ein Pfad darin verstecken. Dann wäre es dem Client möglich, die Dateien überal im vom PHP beschreibbaren Dateisystem unterzubringen.

Fileupload-Scripte sind gefährlich!

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de