Uploader - nur Bilder zulassen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
code
date
datei
datum
ende
endung
erfolgreich datei
fehler
file
foto
http
kleinschreibung
komplette beschreibung
manual
suffix
typ
uhrzeit
url
verzeichnis
vorredner
-
Hallo, ich hab mir ein kleines Upload Script geschreiben:
<?php if(isset($_FILES['upload'], $_POST['submit']) and $_POST['upload'] !== '') { $timestamp = time(); $datum = date("d-m-Y",$timestamp); $uhrzeit = date("H:i:s",$timestamp); $erfolgreich = "Datei erfolgreich hochgeladen\n"; $fehler = "Ein Fehler ist aufgetreten.\n"; $verzeichnis = 'fotos/'; if(file_exists($verzeichnis.$_FILES['upload']['name'])) { move_uploaded_file($_FILES['upload']['tmp_name'], $verzeichnis.$datum.'-'.$uhrzeit.$_FILES['upload']['name']); echo $erfolgreich; }else{ move_uploaded_file($_FILES['upload']['tmp_name'], $verzeichnis.$_FILES['upload']['name']); echo $erfolgreich; } } elseif (!isset($_FILES['upload']) and isset($_POST['submit'])) { echo $fehler; } ?>
Wie kann ich angeben, dass nur Bilder zugelassen werden?
Beitrag zuletzt geändert: 29.5.2011 18:43:30 von rate -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
könntest folgendes noch einbauen:
$allowed_types = "(jpg|jpeg|gif|png)"; // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen) if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
-
jocko schrieb:
könntest folgendes noch einbauen:
$allowed_types = "(jpg|jpeg|gif|png)"; // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen) if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
Und wenn ich meine .exe jetzt einfach in .jpg umbenenne?
Du musst auf jeden Fall auch den Dateityp prüfen.
if (exif_imagetype ($_FILES['upload']['tmp_name']) != IMAGETYPE_JPEG) echo "Keine gültige JPG-Datei.";
-
@chatter: kommt immer darauf an, was er machen möchte.
Hier noch die komplette Beschreibung der Funktion exif_imagetype:
http://www.php.net/manual/de/function.exif-imagetype.php
Übrigens liefert auch getimagesize() einen Typ zurück und logischerweise auch die Größe:
http://de.php.net/manual/de/function.getimagesize.php -
chatter schrieb:
jocko schrieb:
könntest folgendes noch einbauen:
$allowed_types = "(jpg|jpeg|gif|png)"; // Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen) if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) {
Und wenn ich meine .exe jetzt einfach in .jpg umbenenne?
Du musst auf jeden Fall auch den Dateityp prüfen.
if (exif_imagetype ($_FILES['upload']['tmp_name']) != IMAGETYPE_JPEG) echo "Keine gültige JPG-Datei.";
so klappt das ganze Script nicht mehr -
@rate das kann nicht funktionieren, da du schon einen Fehler eingebaut hast, ich hab das ma korrigiert und die Vorschläge der Vorredner miteinfließen lassen, wobei der Punkt mit den Startbytes (auch magische Zahl genannt) eindeutig das wichtigere unterscheidungskriterium ist!
<?php $erfolgreich = "Datei erfolgreich hochgeladen\n"; $fehler = "Ein Fehler ist aufgetreten.\n"; $fehlerDateityp = "Der Dateityp ist ungültig.\n"; if(isset($_FILES['upload'], $_POST['submit']) and $_POST['upload'] !== '') { $allowed_file_types = array( // suffix => image-type-const '.jpg' => IMAGETYPE_JPEG, '.jpeg' => IMAGETYPE_JPEG, '.gif' => IMAGETYPE_GIF, '.png' => IMAGETYPE_PNG ); $allowed_file_types_by_name = '\\'.(implode(array_keys($allowed_file_types), '|\\')); if(preg_match("@($allowed_file_types_by_name)$@i", $FILES['upload']['name'], $m)){ if(exif_imagetype($_FILES['upload']['tmp_name']) == $allowed_file_types[$m[1]]){ $timestamp = time(); $datum = date("d-m-Y",$timestamp); $uhrzeit = date("H:i:s",$timestamp); $verzeichnis = 'fotos/'; if(file_exists($verzeichnis.$_FILES['upload']['name'])) { move_uploaded_file($_FILES['upload']['tmp_name'], $verzeichnis.$datum.'-'.$uhrzeit.$_FILES['upload']['name']); echo $erfolgreich; }else{ move_uploaded_file($_FILES['upload']['tmp_name'], $verzeichnis.$_FILES['upload']['name']); echo $erfolgreich; } } else { echo $fehler.$fehlerDateityp; } } else { echo $fehler.$fehlerDateityp; } } elseif (!isset($_FILES['upload']) and isset($_POST['submit'])) { echo $fehler; } ?>
Mit freundlichen Grüßen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage