php-boon: Upload von Dateien per php

Hallo liebe Gemeinde

Ich bin mit meinem kleinen PHP Latein leider am ende und wende mich deswegen an euch.

Es geht um den Upload von beliebigen Dateien auf meinen webspace.

Wenn ich einerseits in einer html folgendes habe
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form action="upload6.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen">
</form>
</body>
</html>

Und in upload6.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<?php
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);

</body>
</html>

Bekomme ich folgende Fehlermeldung. Und leider weiß ich beim besten Willen nicht weiter.

Warning: move_uploaded_file(upload/+++++asdfdf++++.doc) [function.move-uploaded-file]: failed to open stream: No such file or directory in /www/htdocs/XXX/uploads/upload6.php on line 8

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpugc8KE' to 'upload/+++++asdfdf++++.doc' in /www/htdocs/XXX/uploads/upload6.php on line 8

PHP version des Servers ist PHP-Version: 4.4.9-nmm4
Der Ordner uploads hat die Rechte 777

Vielleicht könnt ihr mir weiterhelfen. Danke schon mal vorab!
Mit freundlichen Grüßen

  1. Lieber php-boon,

    wer in Dateinamen andere Zeichen verwendet als Buchstaben, Ziffern, Minus, Unterstrich und den Punkt, handelt sich bestenfalls unnötigen Ärger ein.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Hi!

    move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);
    Der Ordner uploads hat die Rechte 777

    upload != uploads

    Ansonsten ist das ein viel zu minimaler Ansatz. Du prüfst nichtmal auf Fehler bei Upload. Zudem verwendest du direkt den vom Client mitgeteilten Dateinamen, ohne sicherzustellen, dass der nicht ein paar relative Pfadbestandteile enthält, mit denen man beliebig anderswo Dateien überschreiben könnte (Recht vorausgesetzt). Letzteres kann man prüfen, indem man mit realpath() den wirklichen Dateinamen ermittelt und dessen Anfang mit dem Pfad zum Upload-Verzeichnis vergleicht.

    Lo!