#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 & 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 . '&send=false&layout=box_count&width=450&show_faces=false&font&colorscheme=light&action=like&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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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.. + Multi-Zitat Zitieren
#4 3. Dezember 2012 AW: Upload Script - Einschränkungen Danke, welche Methode kannst du mir zum Filtern der $_POST variablen empfehlen? lg + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 .. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 ... + Multi-Zitat Zitieren