[PHP] Upload Script - Einschränkungen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Aslan, 3. Dezember 2012 .

  1. 3. Dezember 2012
    Upload Script - Einschränkungen

    Hallo liebe Community - Ich hab ein Upload Script, welche das ganze Formular in die MySQL Datenbank speichert...

    PHP:
    <form action="upload.php" method="post" enctype="multipart/form-data"> 
    <label>Anrede </label>
    <select class="element select medium" name="anrede"> 
    <option value="Frau" selected="selected">Frau</option>
    <option value="Herr" >Herr</option></select>
    <br /><label>First</label>
    <input name= "vorname" class="element text" maxlength="255" size="14" value=""/>
    <br /><label>Last</label>
    <input name= "nachname" class="element text" maxlength="255" size="14" value=""/>
    <br /><label class="description" for="element_5">Wohnort </label>
    <input name="wohnort" class="element text medium" type="text" maxlength="255" value=""/> 
    <br /><label class="description" for="element_3">Phone </label>
    <input name="telefon" class="element text medium" type="text" maxlength="255" value=""/> 
    <br /><label class="description" for="element_2">Email </label>
    <input name="email" class="element text medium" type="text" maxlength="255" value=""/> 
    <br /><label class="description" for="element_4">BildUpload </label>
    <input name="datei" class="element file" type="file"/> 
    <input type="submit" value="Absenden &amp; Teilnehmen"> 

    </form>
    <?php

    $anrede 
    $_POST [ anrede ];
    $vorname  $_POST [ vorname ];
    $nachname  $_POST [ nachname ];
    $wohnort  $_POST [ wohnort ];
    $telefon  $_POST [ telefon ];
    $email  $_POST [ email ];
    $punkt  "." ;
    $zufall  rand ( 10000 , 250000 );

    $path_parts  pathinfo ( $_FILES [ 'datei' ][ 'name' ]);
          if(
    move_uploaded_file ( $_FILES [ 'datei' ][ 'tmp_name' ],  "upload/" . $zufall . "." . $path_parts [ 'extension' ])) {
           
    $dateiname  $zufall . $punkt . $path_parts [ 'extension' ];
         
    // echo "Die Datei ".$dateiname." wurde erfolgreich hochgeladen!";
          
    $fb_button  '<iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fturovski.de%2Fcontest%2Fupload%2F' . $dateiname . '&amp;send=false&amp;layout=box_count&amp;width=450&amp;show_faces=false&amp;font&amp;colorscheme=light&amp;action=like&amp;height=90" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:90px;" allowTransparency="true"></iframe>' ;

            
    $eintrag  "INSERT INTO pictures (BILDURL, Anrede, Vorname, Nachname, Wohnort, Telefon, Email, FB_BUTTON)
            VALUES ('
    $dateiname ', ' $anrede ', ' $vorname ', ' $nachname ', ' $wohnort ', ' $telefon ', ' $email ', ' $fb_button ')" ;
            if(
    mysql_query ( $eintrag ) ==  true ){
            echo 
    "Der Upload wurde ausgeführt - Vielen Dank!" ;
            } else{}
            } else{}
    Es ist so gewollt, dass die Datei einen Zufälligen namen erhaltet... Aber jetzt muss ich das alles so einstellen, dass nur JPG & PNG Bilder hochgeladen werden dürfen - nur krieg ich das irgendwie nicht hin - kann mir einer kurz erklären wie das geht??

    Lg
     
  2. 3. Dezember 2012
    AW: Upload Script - Einschränkungen

    Mit "$path_parts['extension']" bekommst du doch die "Extension".
    Sprich JPG, PNG, EXE, etc..

    Damit kannst du eine einfache IF-Anweisung bauen, die den Vorgang abbricht.

    PS: UMBEDINGT DIE "$_POST" VARIABLEN FILTERN!

    Sonst hast du ne dicke SQL-Injection Lücke in deinem Script.
     
    1 Person gefällt das.
  3. 3. Dezember 2012
    Zuletzt bearbeitet: 3. Dezember 2012
    AW: Upload Script - Einschränkungen

    getimagesize()
    Gibt nen Array zurück.. im Schlüssel "mime" findest du den MIME-Type..

    @BlueSin..
    Über die Dateierweiterung würde ich es nicht machen.
    Kann ja jeder die Dateiendung auf .jpg oder .png ändern..
     
  4. 3. Dezember 2012
    AW: Upload Script - Einschränkungen

    Danke, welche Methode kannst du mir zum Filtern der $_POST variablen empfehlen?

    lg
     
  5. 3. Dezember 2012
    AW: Upload Script - Einschränkungen

    ACHTUNG!

    Der wert in $_FILES['irgendwas']['type'] kommt vom Browser und dem sollte nicht getraut werden!


    mysql_real_escape_string sollte seinen Job machen, bei der Ausgabe einfach drauf achten das der Wert je nach verwendungszweck mit htmlspecialchars abgesichert ist.
     
    1 Person gefällt das.
  6. 3. Dezember 2012
    AW: Upload Script - Einschränkungen

    Code:
    <!DOCTYPE html>
    <html>
     <head>
     <title>Beispielformular</title>
     <meta charset="UTF-8" />
    </head>
    <body>
    <form action="<?php echo htmlentities($_SERVER["PHP_SELF"]); ?>" method="post" enctype="multipart/form-data">
    Datei: <br />
    <input type="hidden" name="MAX_FILE_SIZE" value="300000" />
    <input type="file" name="datei" /><br />
    <input type="submit" value="Hochladen" />
    </form>
    
    <?php
    if (isset($_FILES["datei"]) AND ! $_FILES["datei"]["error"] AND ($_FILES["datei"]["size"] < 300000 )) {
     $bildinfo = getimagesize($_FILES["datei"]["tmp_name"]);
     if ($bildinfo === false) {
     die("kein Bild");
     } else {
     $mime = $bildinfo["mime"];
     $mimetypen = array (
     "image/jpeg" => "jpg",
     "image/gif" => "gif",
     "image/png" => "png"
     );
     if (!isset($mimetypen[$mime])) {
     die("nicht das richtige Format");
     } else {
     $endung = $mimetypen[$mime];
     }
    
     $neuername = basename($_FILES["datei"]["name"]);
     $neuername = preg_replace("/\.(jpe?g|gif|png)$/i", "", $neuername); 
     $neuername = preg_replace("/[^a-zA-Z0-9_-]/", "", $neuername); 
     $neuername .= ".$endung";
     $ziel = "upload/$neuername";
     while (file_exists($ziel)) {
     $neuername = "kopie_$neuername";
     $ziel = "upload/$neuername";
     }
     if (@move_uploaded_file($_FILES["datei"]["tmp_name"], $ziel)) {
     echo "Dateiupload hat geklappt";
     } else {
     echo "Dateiupload hat nicht geklappt";
     }
     }
    }
    ?>
    
    
    </body>
    </html>
    
    
    und die post inserts eben real escapen
     
  7. 9. Dezember 2012
    AW: Upload Script - Einschränkungen

    Nachdem ich auf diesen Thread aufmerksam gemacht wurde (fast beschuldigt *gg*) noch kurz eine frage es wird ja eine "kopie_dateiname.jpg oder eine kopie_kopie_dateiname.jpg" erstellt - wie unterbinde ich das und sag gleich "error datei dateiname.jpg gibts schon" - und wie trage ich das ganze in die mysql ein am sinvollsten?
     
  8. 9. Dezember 2012
    Zuletzt bearbeitet: 9. Dezember 2012
    AW: Upload Script - Einschränkungen

    jaja sorry, bei mir gehts aber auch nicht im android mode im Dolphin, im desktop Modus gehts
    kopie rauslöschen oder eben die ganze else funktion dropen, eintragen in sql, dateinamen eben als Variablen festlegen und nen insert machen
     
  9. 9. Dezember 2012
    AW: Upload Script - Einschränkungen

    Eben es soll für jeden Client gehen egal welcher mod oder wie auch immer .. das is ja das Problem .. WARUM ES NICHT GEHT ..das upload Script Ansicht wär ja kein Thema ..
     
  10. 9. Dezember 2012
    Zuletzt bearbeitet: 9. Dezember 2012
    AW: Upload Script - Einschränkungen

    die frage wäre eben welche Ursachen das ganze hat


    edit: android funktioniert nun auch bei Dolphin und im Standart Browser, setz die File sizes mal hoch
     
  11. 9. Dezember 2012
    AW: Upload Script - Einschränkungen

    Werd ich testen wenn ixh daheim bin .. daher gab's ja das Script von nanobyte was den Fehler zeigen soll .. nur dennoch auf den meisten devices error ...
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.