kostenloser Webspace werbefrei: lima-city


Uploader - nur Bilder zulassen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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"])) {
  4. 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.";
  5. @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
  6. Autor dieses Themas

    rate

    rate hat kostenlosen Webspace.

    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
  7. @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
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!