Problem mit Bilderupload

Freak_Desperado

Erfahrenes Mitglied
Hallo!
Ich habe einen Bilderupload, der mal funktionier und mal nicht. Das Script scheint nämlich mit ein paar JPEG-Dateien ein Problem zu haben. Manche funktionieren und manche nicht. GIF-Dateien gehen anscheinend alle. Woran könnte das liegen?

Hier ist der Code der Datei, an die das Bild gesendet wird:
PHP:
    <?php
      session_start();
      require "settings.ini";
      $maxspace = $maxprofilepicsize * 1024;
    
      $tempname = $_FILES['file']['tmp_name'];
      $name = $_FILES['file']['name'];
      $type = $_FILES['file']['type'];
      $size = $_FILES['file']['size'];
    
      if($type != "image/gif" && $type != "image/jpeg") {
    	$err[] = "Nur gif und jpeg Dateien dürfen hochgeladen werden.";
      }
      if($size > $maxspace) {
 	$err[] = "Die Datei, die du hochladen willst, ist zu groß!<br>Die maximale Dateigröße beträgt $maxspace KB!";
      }
    
      if($type == "image/gif"){
    	$ext = "gif";
      }elseif($type == "image/jpeg"){
    	$ext = "jpg";
      }
    
      if(empty($err)) {
    	$nickname = $_SESSION["username"];
    	$ziel = $userpicrootdir."/".$nickname.".".$ext;
    	$dateiname = $nickname.".".$ext;
    	$sqldateiname = $nickname."_thumb.".$ext;
    
    	copy($tempname, $ziel);
    	resizeProfilePic($nickname,$ext);
    	ProfilePicThumb($nickname,$ext);
    	connect_db();
    	$sql = "UPDATE userdb SET pic = '$sqldateiname' WHERE nick = '$nickname' LIMIT 1";
    	mysql_query($sql);
    
    	echo "Das Bild wurde erfolgreich hochgeladen.";
      }else{
    	foreach($err as $error)
    	echo "$error<br>";
      }
    ?>

PS: Die Variablen $maxprofilepicsize und $userpicrootdir sind in der settings.ini enthalten.
 
Ich glaub, diesen Satz hab ich hier schon ein paar dutzende Male geschrieben:

Wenn du den JPG als Grafik-Typ identifizieren willst, verwende [phpf]getimagesize[/phpf].... ein JPG kann diverse MIME-Types haben, nicht nur image/jpeg
 
Ich habe jetzt noch den MIME-Type "image/pjpeg" hinzugefügt. Mehr habe ich nicht gefunden. Habe ich noch welche übersehen?

PS: Wie muss ich denn da getimagesize() einfügen?
Einfach $variable = getimagesize($tempname) oder wie?
 
getimagesize(dateiname) gibt einen Array mit Infos zu einem Bild zurück, das 3. Element davon liefert eine Zahl, an welcher du den Typ erkennst(bei 2 ist es ein JPG, unabhängig vom MIME-Type).
Aber das steht auch alles bei php.net.

Zu den Typen...da gibts noch mehr, z.B. jpg,jpe, jfif..... daher getimagsize(), denn wer will diese Typen schon alle prüfen.
 
Zurück