Hello Mario,
Dein Script enthält die verschiedensten Fehlerquellen und Gefahrenpotentiale. Ich versuche mal, darauf einzugehen:
ich habe folgendes Formular:
<form enctype="multipart/form-data" action="upload.php" method="post">
<input name="file" type="file"><br>
<input type="submit" value="hochladen">
Der Button sollte durchaus einen Namen bekommen und der
Kopiervorgang auch nur durch den Button ausgelöst werden.
</form>
Die Datei upload.php sieht folgendermaßen aus:
<?php
Es werden Posts von jedermann angenommen.
Man sollte die Benutzer, die etwas hochladen dürfen
autentifizieren können
$tempname = $_FILES['file']['tmp_name'];
$name .= $_FILES['file']['name'];$type = $_FILES['file']['type'];
Der übermittelte Type kann gefälscht sein, insbesondere
unter Berücksichtigung des "offenen Scriptes". Man kann das
Script ohne Aufwand mit einem anderen Script bedienen
$size = $_FILES['file']['size'];
if($type != "image/gif" && $type != "image/pjpeg")
Ich würde an dieser Stelle lieber $imgdata = getimagesize()
benutzen (1 = GIF, 2 = JPG, 3 = PNG, SWF = 4)
$imgdata[2] == 1 -> GIF,
Die Funktion wertet tatsächlich den Datei-Header aus
{
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "15000")
{
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
}echo $name;
If(empty($err))
{
copy("$tempname", "$name");
hier fehlt:
## $cpok=copy($tempname, $path."/".$name);
## if (!cpok)
{
$err[] = "Fehler beim Kopieren der Datei.";
}
else
{
$err[] = "Datei wurde kopiert";
}
}
{
foreach($err as $error)
echo "$error<br>";
}
?>Und hier die Fehlermeldung vom Server:
hamster.jpg
Warning: copy(hamster.jpg): failed to open stream: Permission denied in /var/www/web98/html/admin/werbung/upload.php on line 18
Die Datei hamster.jpg wurde erfolgreich hochgeladen!
Entweder durfte der Apache mit dem copy()-Befehl die Quelle nicht öffen oder das Ziel nicht anlegen oder sogar beides. Zweiteres ist wahrscheinlicher. Der Webserver (PHP) muss im Zielverzeichnis Schreibrechte haben.
Viele Grüße nach Ulm
Tom