Bild upload script

Ja, nimmt man...

Ich poste mir mal ein paar Sachen, die mir auffallen...

  • Statt $HTTP_POST_FILES => $_FILES nehmen
  • Statt den Type aus deinem Formular abzulesen, der sich nur auf die Dateiendung bezieht, solltest du lieber [phpf]getimagesize[/phpf] benutzen, dass im Array auch den Mime Type zurückgibt
  • Statt überall die Fehler zu unterdrücken per @ solltest du [phpf]error_reporting[/phpf] auf 0 stellen. Dies würde dir erleichtern bei möglichen Kunden schnell den Debug Mode anzustellen (error_reporting auf E_ALL) und zu schauen, wo der Fehler auftritt.
  • Außerdem solltest du, nach Erstellen des Thumbnails und Größere verändern, die alte Bildressource per [phpf]imagedestroy[/phpf] vernichten.

Das ist alles was mir spontan auffällt ;)
 
Okay da kümmere ich mich dann erstmal drum^^
Danke erstmal..

So soweit alles abgehakt..
Ausser error Reporting:
Ich denke dieses müsste in der PHP.ini geschehen.
Oder
Wenn ja müßte ich sie mir morgen mal freigeben lassen.
LG Lars
 
Zuletzt bearbeitet:
denk dran das der upload bei funpic glaube nur 1MB pro datei ist... war zumindest mal so....


MfG Gunah
 
So soweit alles abgehakt..
Ausser error Reporting:
Ich denke dieses müsste in der PHP.ini geschehen.
Oder
Wenn ja müßte ich sie mir morgen mal freigeben lassen.
LG Lars

Nein, [phpf]error_reporting[/phpf] ist ja eben dafür da, dass man es nicht in der php.ini ändern muss, sondern während der Laufzeit eines Skriptes ändern kann.

Es kann natürlich sein, dass der Befehl von deinem Hoster deaktiviert wurde.
 
Oki dann muß ich mal gucken wo ich den in das script packen kann...
Danke auf jedenfall nochmal ;)


Den anderen Post mit dem Funpic verstehe ich irgendwie nicht...
Wer hat den von Funpic gesprochen?

LG Lars
 
Am besten ganz oben in das Skript... Und wenn alles fehlerfrei läuft, stellst du es eben auf 0, damit niemand einen Nutzen aus den Fehlermeldungen ziehen kann. Und wenn mal was nicht klappt, stellst du es auf E_ALL und auf gehts ins Nirvana der Fehlermeldungen.
 
Danke für die hilfe aber ich versteh da eigentlich garnichts
ich wär glücklich wenn mir einer einen fetigen Script schicken würde!

// EDIT
ich hab hier ein script gefunden aber er kann bilder nur zu einer bestimmten grösse hochladen
liegt es vieleicht an meinem funpic webspace?
oder an dem Script?

PHP:
<html> 
<head> 
<title>Upload</title> 
</head> 
<body> 
<? 
if($action){ 

   // -------------------------------- 
   // Diverse Variablen 
   // -------------------------------- 

$path = "images/typen/"; // Url zum Speicherordner der großen Bilder 
$thumb_path = "images/typen/thumb/"; // Url zum Speicherordner der Vorschaubilder 
$config_width = "320"; // Bildbreite max. bei großem Bild 
$config_height = "240"; // Bildhöhe max. bei großem Bild 
$config_thumb_width = "80"; // Bildbreite max. bei Vorschaubild 
$config_thumb_height = "60"; // Bildhöhe max. bei Vorschaubild 
$resizequality = "70"; // Bildkompressionsrate 0-100 
$deindomain = "http://www...........de/";  // unsere Domain 

if ($HTTP_POST_FILES['userfile']['tmp_name']<> 'none') 
   { 

   // -------------------------------- 
   // Get File Upload Info 
   // -------------------------------- 

         $filename = $HTTP_POST_FILES['pic_file']['name']; 
         $filetype = $HTTP_POST_FILES['pic_file']['type']; 
         $filetmp = $HTTP_POST_FILES['pic_file']['tmp_name']; 

   // -------------------------------- 
   // Check file type 
   // -------------------------------- 

   switch ($filetype) 
   { 
      case 'image/jpeg': 
      case 'image/jpg': 
      case 'image/pjpeg': 

         $pic_filetype = '.jpg'; 
         break; 

      case 'image/png': 
      case 'image/x-png': 

         $pic_filetype = '.png'; 
         break; 

      case 'image/gif': 

         $pic_filetype = '.gif'; 
         break; 
      default: 
         die("Falsches Dateiformat. Nur JPEG, GIF oder PNG erlaubt!"); 
   } 

   // -------------------------------- 
   // Generate filename 
   // -------------------------------- 

   srand((double)microtime()*1000000);   // for older than version 4.2.0 of PHP 

   do 
   { 
      $pic_filename = md5(uniqid(rand())) . $pic_filetype; 
   } 
   while( file_exists($path . $pic_filename) ); 


   // -------------------------------- 
   // Move this file to upload directory 
   // -------------------------------- 

   $ini_val = ( @phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var'; 

   if ( @$ini_val('open_basedir') != '' ) 
   { 
      if ( @phpversion() < '4.0.3' ) 
      { 
         die("open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin"); 
      } 

      $move_file = 'move_uploaded_file'; 
   } 
   else 
   { 
      $move_file = 'copy'; 
   } 

   $move_file($filetmp, $path . $pic_filename); 

   @chmod($path . $pic_filename, 0777); 


   // -------------------------------- 
   // Well, it's an image. Check its image size 
   // -------------------------------- 

   $pic_size = getimagesize($path . $pic_filename); 

   $pic_width = $pic_size[0]; 
   $pic_height = $pic_size[1]; 


   // -------------------------------- 
   // This image is okay, we can cache its thumbnail now 
   // -------------------------------- 

   if($pic_filetype != '.gif') 
   { 
      $gd_errored = FALSE; 

      switch ($pic_filetype) 
      { 
         case '.jpg': 
            $read_function = 'imagecreatefromjpeg'; 
            break; 
         case '.png': 
            $read_function = 'imagecreatefrompng'; 
            break; 
      } 

      $src = @$read_function($path  . $pic_filename); 

      if (!$src) 
      { 
         $gd_errored = TRUE; 
         $pic_thumbnail = ''; 
      } 
      else if( ($pic_width > $config_thumb_width) or ($pic_height > $config_thumb_height) ) 
      { 
         // Resize it 
         if ($pic_width > $pic_height) 
         { 
            $thumbnail_width = $config_thumb_width; 
            $thumbnail_height = $config_thumb_width * ($pic_height/$pic_width); 
         } 
         else 
         { 
            $thumbnail_height = $config_thumb_height; 
            $thumbnail_width = $config_thumb_height * ($pic_width/$pic_height); 
         } 

         $thumbnail = @imagecreatetruecolor($thumbnail_width, $thumbnail_height); 

         $resize_function = 'imagecopyresampled'; 

         @$resize_function($thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height); 
      } 
      else 
      { 
         $thumbnail = $src; 
      } 

      if (!$gd_errored) 
      { 
         $pic_thumbnail = $pic_filename; 

         // Write to disk 
         switch ($pic_filetype) 
         { 
            case '.jpg': 
               @imagejpeg($thumbnail, $thumb_path . $pic_thumbnail, $resizequality); 
               break; 
            case '.png': 
               @imagepng($thumbnail, $thumb_path . $pic_thumbnail); 
               break; 
         } 

         @chmod($thumb_path . $pic_thumbnail, 0777); 

      } // End IF $gd_errored 

   } // End Thumbnail Cache 


  // -------------------------------------- 
  // OK lets resize the original picture 
  // -------------------------------------- 

  if($pic_filetype != '.gif') 
  { 
    $gd_errored = FALSE; 

    switch ($pic_filetype) 
    { 
      case '.jpg': 
        $read_function = 'imagecreatefromjpeg'; 
        break; 
      case '.png': 
        $read_function = 'imagecreatefrompng'; 
        break; 
    } 

    $src = @$read_function($path  . $pic_filename); 

    if (!$src) 
    { 
      $gd_errored = TRUE; 
      $pic_resize = ''; 
    } 
    else if( ($pic_width > $config_width) or ($pic_height > $config_height) ) 
    { 
      // Resize it 
      if ( (($pic_width / $pic_height) > ($config_width / $config_height)) ) 
      { 
        $resize_width = $config_width; 
        $resize_height = $config_width * ($pic_height/$pic_width); 
      } 
      else 
      { 
        $resize_height = $config_height; 
        $resize_width = $config_height * ($pic_width/$pic_height); 
      } 

      $resize = @imagecreatetruecolor($resize_width, $resize_height); 

      $resize_function = 'imagecopyresampled'; 

      @$resize_function($resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height); 
    } 
    else 
    { 
      $resize = $src; 
    } 

    if (!$gd_errored) 
    { 
      $pic_resize = $pic_filename; 

      // Write to disk 
      switch ($pic_filetype) 
      { 
        case '.jpg': 
          @imagejpeg($resize, $path . $pic_resize, $resizequality); 
          break; 
        case '.png': 
          @imagepng($resize, $path . $pic_resize); 
          break; 
      } 

      @chmod($path . $pic_resize, 0777); 

    } // End IF $gd_errored 

  } // End Picture Resize 

      echo "Datei ist auf dem Server! <br><br>"; 
      echo "Url des großen Bildes: <a href=\"$deindomain$path$pic_filename\" target=\"_blank\">".$deindomain.$path.$pic_filename; 
     echo "</a> <br><img src=\"$deindomain$path$pic_filename\"><br><br>"; 
      echo "Url des Vorschaubildes: <a href=\"$deindomain$thumb_path$pic_filename\" target=\"_blank\">".$deindomain.$thumb_path.$pic_filename; 
     echo "</a> <br><img src=\"$deindomain$thumb_path$pic_filename\">"; 

   } 
} else { ?> 

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"> 
<input type="hidden" name="MAX_FILE_SIZE" value="4000000"> 
<br> 
<strong>File Upload</strong> <br> 
<br> 
<input name="pic_file" type="file" size=40> 
<br> 
<br> 
<input type="submit" name="action" value="Speichern"> 
</form> 
<? 
 } 
   // ----------------------------------------- 
   // Das Script kann unter Verwendung 
   // dieses Vermerks uneingeschränkt 
   // genutzt / verändert werden. 
   //  © www.marc-gutt.de 
   // ----------------------------------------- 
?> 
</body> 
</html>


Moin moin,
ich benutze dieses Upload script nun schon eine ganze Zeit und habe eine Menge verändert. Neuerdings hatte ich Probleme die nun auch gelöst sind.
Allerdings musste ich für die Perfomance eine Zeile auskommentieren.
Ich wüßte gerne ob ich irgendetwas übersehen habe warum diese Zeile überhaupt ein zweites mal vorkommen muss.

Es geht um folgenden code:
PHP:
    $src = @$read_function($path  . $pic_filename);

LG Lars
 
Zurück