#1 27. November 2008 Uploader muckt rum Hallo, ich habe ein kleines Problem und zwar folgendes: In meinem Usercenter können User ein Anzeigebild (Avatar) hochladen. Dies geschieht über dieses Formular: HTML: <div id="inhalt3"> <h1>Usercenter - Anzeigebild ändern</h1> <a href="index.php?nav=myaccount">zurück zur Übersicht</a><br /><br /> aktuelles Foto:<br /> {FOTO}<br /> <br /> <form action="index.php?nav=user&do=saveavatar" method="post" enctype="multipart/form-data" name="step1" id="step1"> <label>neues Foto: <input type="file" name="Foto" id="foto" title="Laden Sie hier ein Foto von Ihnen hoch."/> </label> <br /> (max 2MB, nur *.jpg, *.jpeg Dateien, *.gif, wird auf 200x200px verkleinert) <br /> <br /> <input type="submit" name="speichern" id="speichern" value="speichern" title="Speichern der Änderungen."/> </form><br /><br /> <form action="index.php?nav=user&do=delavatar" method="post" name="delete"> <label> <input name="deleter" type="checkbox"/> Anzeigebild löschen </label><br /> <label> <input type="submit" name="loeschen" id="loeschen" value="löschen" /> </label> <br /> </form> </div> Wie es sich bei einem Uploadscript gehört ist "enctype="multipart/form-data"" gesetzt. Wenn nun in der Datei user.php dieser Verweis (nav=user&do=saveavatar) aufgerufen wird, funktioniert das zwar bei mir aufm Lokalhost, jedoch nicht auf meinem Webserver. Dort lädt der irgendwie ins Unendliche und gibt nur einen weißen Bildschirm aus. Es werden keine Fehlermeldungen oder so angezeigt. Die Datei wird allerdings auf den Server mit den Rechten, die mittels CHMOD gesetzt wurden, hochgeladen! Hier der Code aus der user.php: PHP: ############################# //Anzeigebild speichern/hochladen ############################# case 'saveavatar' : //checken ob das Formular abgeschickt wurde if(isset( $_POST [ 'speichern' ])) { //Avatar des Users if( $_FILES [ 'Foto' ][ 'tmp_name' ] != "" ) { //Nur Jpg und Gif erlaubt if( $_FILES [ 'Foto' ][ 'type' ] == "image/jpeg" OR $_FILES [ 'Foto' ][ 'type' ] == "image/jpg" OR $_FILES [ 'Foto' ][ 'type' ] == "image/pjpeg" OR $_FILES [ 'Foto' ][ 'type' ] == "image/gif" ) { //MAX 2 MB if( $_FILES [ 'Foto' ][ 'size' ] < 2147483648 ) { //hochladen des Fotos mit der upload_foto funktion $foto = upload_foto ( $_FILES [ 'Foto' ][ 'tmp_name' ], $_FILES [ 'Foto' ][ 'type' ], "design/images/user_pics/" ); if( $foto != "false" ) { //Name des Bildes if( $_FILES [ 'Foto' ][ 'type' ] == "image/jpeg" OR $_FILES [ 'Foto' ][ 'type' ] == "image/jpg" OR $_FILES [ 'Foto' ][ 'type' ] == "image/pjpeg" ) { $neuer_name = "design/images/user_pics/" . $_SESSION [ 'u_id' ]. ".jpg" ; } else { $neuer_name = "design/images/user_pics/" . $_SESSION [ 'u_id' ]. ".gif" ; } //ermitteln des alten Bildes $altesbild_sql = mysql_query ( "SELECT `Foto` FROM `benutzer_daten` WHERE `users_BenutzerID` = '" . $_SESSION [ 'u_id' ]. "'" ); //Wenn vorhanden, wird es gelöscht if( mysql_num_rows ( $altesbild_sql ) == 1 ) { $altesbild_res = mysql_fetch_array ( $altesbild_sql ); //löschen des alten Bildes, wenn gefunden if( file_exists ( $altesbild_res [ 0 ])) { //löschen unlink ( $altesbild_res [ 0 ]); } } //Updaten der Datenbank $update_foto = mysql_query ( "UPDATE `benutzer_daten` SET `Foto` = '" . $neuer_name . "' WHERE `users_BenutzerID` = '" . $_SESSION [ 'u_id' ]. "'" ); //Umbennen des Fotos rename ( $foto , $neuer_name ); //Laden der Templatefile - gibt die Erfolgsmeldung zurück $save_tmp_file = "design/templates/user_speichern.html" ; $save_template = new template ( $save_tmp_file ); //Ausgabe der Erfolgsmeldung (TEMPLATE) $inhalt = $save_template -> returnTemplate (); } else { //Fehler - CHMOD konnte nicht gesetzt werden $reg_tmp_file = "design/templates/error.html" ; $reg_template = new template ( $reg_tmp_file ); $reg_template -> ersetzen ( 'ERROR' , 'Das Foto <b>' . $_FILES [ 'Foto' ][ 'name' ]. '</b> konnte nicht hochgeladen werden!<br /><br /> <a href="javascript:history.back();">zurück</a>' ); $inhalt = $reg_template -> returnTemplate (); } } else { //Fehler - größer als 2 MB $reg_tmp_file = "design/templates/error.html" ; $reg_template = new template ( $reg_tmp_file ); $reg_template -> ersetzen ( 'ERROR' , 'Das Foto <b>' . $_FILES [ 'Foto' ][ 'name' ]. '</b> ist größer als 2 MB!<br /><br /> <a href="javascript:history.back();">zurück</a>' ); $inhalt = $reg_template -> returnTemplate (); } } else { //Fehler Falsches Format $reg_tmp_file = "design/templates/error.html" ; $reg_template = new template ( $reg_tmp_file ); $reg_template -> ersetzen ( 'ERROR' , 'Das Foto <b>' . $_FILES [ 'Foto' ][ 'name' ]. '</b> hat kein gültiges Format!<br /><br /> <a href="javascript:history.back();">zurück</a>' ); $inhalt = $reg_template -> returnTemplate (); } } } else { //Aufrufen der Seite ohne Formular abzuschicken $reg_tmp_file = "design/templates/error.html" ; $reg_template = new template ( $reg_tmp_file ); $reg_template -> ersetzen ( 'ERROR' , '<b>Sie haben einen ungültigen Verweis aufgerufen!</b><br /><br /> <a href="javascript:history.back();">zurück</a>' ); $inhalt = $reg_template -> returnTemplate (); } break; Hier die "upload_foto"-Funktion PHP: function upload_foto ( $filename , $type , $path ) { //$path //liefert das Verzeichnis - ob das Bild von einem User oder Unternehmen hochgeladen wird! //eindeutiger zufallsname für das Bild! $zufallsname = md5 ( uniqid ( rand (), TRUE )); $endung = 'JPG' ; if( $type == "image/jpeg" OR $type == "image/jpg" OR $type == "image/pjpeg" ) { $name = $zufallsname . ".jpg" ; } else { $name = $zufallsname . ".gif" ; $endung = 'GIF' ; } //Verschieben if( move_uploaded_file ( $filename , $path . $name )) { //schreib- und leserechte für das bild //sonst fehler auf servern mit hohen sicherheitseinstellungen if( chmod ( $path . $name , 0755 )) { //Bildmaße ermitteln $abmessungen = getimagesize ( $path . $name ); //Die Datei $file = $path . $name ; $width_orig = $abmessungen [ 0 ]; $height_orig = $abmessungen [ 1 ]; //Maximale Höhe des neuen Bildes! $width_neu = 200 ; $height_neu = 200 ; //name des Bildes $thumb_name = $path . $name ; //Erzeugen eines neuen Bildes mit den Abmessungen $image_neu = imagecreatetruecolor ( $width_neu , $height_neu ); if( $endung == "JPG" ) { $image_alt = imagecreatefromjpeg ( $file ); imagecopyresized ( $image_neu , $image_alt , 0 , 0 , 0 , 0 , $width_neu , $height_neu , $width_orig , $height_orig ); imagejpeg ( $image_neu , $thumb_name , 100 ); } else { $image = imagecreatefromgif ( $file ); imagecopyresized ( $image_neu , $image_alt , 0 , 0 , 0 , 0 , $width_neu , $height_neu , $width_orig , $height_orig ); imagegif ( $image_neu , $thumb_name , 100 ); } return $thumb_name ; } //Schreibrechte vergeben fehlgeschlagen else { return false ; } } //Bild hochladen fehlgeschlagen else { return false ; } } Weiß jemand vielleicht woran das liegt, dass der Upload auf dem Webserver nicht klappt? Vielen, vielen herzlichen Dank für eure Hilfe! Bin über jeden Beitrag sehr dankbar! BW geht raus! Gruß Rag + Multi-Zitat Zitieren
#2 27. November 2008 AW: Uploader muckt rum weiße, leere seite? schreib ganz oben mal: PHP: error_reporting ( E_ALL | E_STRICT ); PHP: //MAX 2 MB if( $_FILES [ 'Foto' ][ 'size' ] < 2147483648 ) das sind 2GB nicht 2MB PHP: if( $foto != "false" ) gibst du da wirklich false als string zurück? ich sehe da ein bool false fix das mal und probiers nochmal + Multi-Zitat Zitieren
#3 27. November 2008 AW: Uploader muckt rum Wow!! Das ging ja mal schnell!! BW hast du! Zu den Problemen: 1. Größe: 2097152 = 2 MB? Hab mich da wohl mal grausam verrechnet. (1024x1024x2) 2. error_reporting füge ich hinzu 3. Stimmt... da habe ich wohl das falsche Dateiformat... da kann garkein Fehler ausgegeben werden... Lauter Schlampigkeitsfehler. Ich werde sie mal beheben und dann hier bescheid geben! Thx Gruß Rag EDIT: Habe das mal gemacht; Leider keine Veränderung + Multi-Zitat Zitieren
#4 29. November 2008 AW: Uploader muckt rum hmm, is das script lokal oder auf nem server/webspace? kann gut sein das, wie hier ja schonmal wer bei sich selber festgestellt hat, an deiner konfig was falsch is. erstell mal eine neue php-datei und schreib das rein: PHP: <? php phpinfo (); ?> lads sie hoch und poste den link, oder schicks mir per pn falls du ned willst das es jeder lesen kann. + Multi-Zitat Zitieren
#5 30. November 2008 AW: Uploader muckt rum Habe hier mal mein Script ausgelagert aufm Server: http://skull.iw-h.de/test/ Er kennt die Funktionen imagecreate() und imagecreatetruecolor() nicht.... Habe mich bereits an den Support gewendet. Das liegt dann wohl eher nicht an meinem Script, oder? Gruß Rag + Multi-Zitat Zitieren
#6 30. November 2008 AW: Uploader muckt rum Salute, Nein, liegt nicht an Deinem Skript - vielmehr an den PHP-Settings von deinem Hoster. Um Image-Funktionen nutzen zu können brauchts die gd-extension. Link: PHP: GD - Manual Grüße, MArc + Multi-Zitat Zitieren
#7 30. November 2008 AW: Uploader muckt rum Gut Dann hat IW-H da wohl was vergessen. Habe soeben ein SupportTicket abgeschickt und der Betreiber (ist auch hier im Forum unterwegs) behebt das Problem bereits. Vielen Dank! @MArc: bw hast du auch =) Edit: Das script läuft jetzt + Multi-Zitat Zitieren
#8 1. Dezember 2008 AW: Uploader muckt rum Upload von Gif geht doch nicht -.- PHP: <? php error_reporting ( E_ALL | E_STRICT ); ini_set ( 'display_errors' , TRUE ); if(isset( $_POST [ 'speichern' ])) { $zufallsname = md5 ( uniqid ( rand (), TRUE )); if(! $abmessungen = getimagesize ( $_FILES [ 'Foto' ][ 'tmp_name' ])) { echo "abmessungen" ; die(); } $format = $abmessungen [ 2 ]; if( $abmessungen [ 2 ] == 2 ) { $name = $zufallsname . ".jpg" ; $endung = 'jpg' ; } elseif( $abmessungen [ 2 ] == 1 ) { $name = $zufallsname . ".gif" ; $endung = 'gif' ; } else { echo "Format: " . $format ; die(); } $name = $zufallsname . "." . $endung ; if(! move_uploaded_file ( $_FILES [ 'Foto' ][ 'tmp_name' ], "img/" . $name )) { echo "move" ; die(); } if(! chmod ( "img/" . $name , 0644 )) { echo "chmod" ; die(); } $file = "img/" . $name ; $breite = $abmessungen [ 0 ]; $hoehe = $abmessungen [ 1 ]; $breite_neu = 200 ; $hoehe_neu = 200 ; switch( $endung ) { case "jpg" : //Erzeugen eines neuen Bildes mit den Abmessungen $image_neu = imagecreatetruecolor ( $breite_neu , $hoehe_neu ); if(! $image_neu ) { echo "true color" ; die(); } $image_alt = imagecreatefromjpeg ( $file ); if(! $image_alt ) { echo "create" ; die(); } if(! imagecopyresized ( $image_neu , $image_alt , 0 , 0 , 0 , 0 , $breite_neu , $hoehe_neu , $breite , $hoehe )) { echo "copy" ; die(); } if(! imagejpeg ( $image_neu , $file , 100 )) { echo "image" ; die(); } break; case "gif" : //Erzeugen eines neuen Bildes mit den Abmessungen $image_neu = imagecreate ( $breite_neu , $hoehe_neu ); if(! $image_neu ) { echo "imagecreate" ; die(); } $image_alt = imagecreatefromgif ( $file ); if(! $image_alt ) { return "create" ; die(); } if(! imagecopyresized ( $image_neu , $image_alt , 0 , 0 , 0 , 0 , $breite_neu , $hoehe_neu , $breite , $hoehe )) { return "copy" ; die(); } if(! imagegif ( $image_neu , $file , 100 )) { return "image" ; die(); } break; default: echo "Switch" ; die(); break; } if ( $_FILES [ 'Foto' ][ 'error' ] != UPLOAD_ERR_OK ) { echo 'Upload Fehlernummer: ' . $_FILES [ 'datei' ][ 'error' ]; die(); } echo 'Typ: ' . $endung . '<br><img src="' . $file . '">' ; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <meta name="author" content=""> <title>Untitled 1</title> </head> <body> <h1>Usercenter - Anzeigebild ändern</h1> <form action="index.php" method="post" enctype="multipart/form-data" name="step1" id="step1"> <label>neues Foto: <input type="file" name="Foto" id="foto" title="Laden Sie hier ein Foto von Ihnen hoch."/> </label> <br /> (max 2MB, nur *.jpg, *.jpeg Dateien, *.gif, wird auf 200x200px verkleinert) <br /> <br /> <input type="submit" name="speichern" id="speichern" value="speichern" title="Speichern der Änderungen."/> </form> </body> </html> findet wer den fehler? =( Jpg gehen, gif nicht! zu testen: http://skull.iw-h.de/test/index.php thx gruß rag + Multi-Zitat Zitieren