mein "Vorschlag":
Code: Alles auswählen
<FORM ENCTYPE="multipart/form-data" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD=POST>
Wählen Sie bitte eine Datei aus:<br>
<INPUT NAME="datei" TYPE="file"><BR>
<INPUT TYPE="submit" VALUE="Upload">
</FORM>
<?php
if (isset($_FILES['datei']))
{
echo 'Dateiname: ' . $_FILES['datei']['name'] . '<br>';
echo 'Größe der Datei in Byte: ' . $_FILES['datei']['size']. '<br>';
echo 'MIME-Type der Datei: ' . $_FILES['datei']['type'] . '<br><br>';
if ($_FILES['datei']['type'] == "image/gif" or $_FILES['datei']['type'] == "image/jpeg" or $_FILES['datei']['type'] == "image/bmp" or $_FILES['datei']['type'] == "application/zip" or $_FILES['datei']['type'] == "text/html")
{
move_uploaded_file($_FILES['datei']['tmp_name'], $_FILES['datei']['name']);
echo '<br>Link: <a href="' . $_FILES['datei']['name'] . '">klick</a>';
}
}
?>
Es wird erst geprüft, was es für eine Datei ist, bevor sie mit
move_uploaded_file kopiert wird.
Ich habe auch
Code: Alles auswählen
$_FILES['datei']['type'] == "application/octet-stream"
weggelassen, weil man dadurch php-Dateien hochladen konnte.
Allerdings ist die Prüfung mit
$_FILES['xyz']['type'] nicht wirklich sicher, da der Typ vom Browser übertragen wird ... und das kann man beeinflussen.
Wenn nur Grafikdateien hochgeladen werden dürfen, solltest du
getimagesize nutzen.
Andere Dateien könnte man über die Extensions mit
pathinfo prüfen.