php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 09-02-2009, 08:07
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard [PHP5] Fragen zum erstellen eines Bildupload Scripts

Hallo,

ich schreibe gerade an einem Bild Uploadscript für meine Seite.

Jetzt bin ich beim Schreiben auf folgende Idee gekommen, falls ein User mal so "ungeschickt" war und seinem Bild ausversehen eine falsche oder zweite Endung gegeben hat (z.B. bild.jpg.txt), dann erkennt zwar getimagesize immer noch, das es ein Bild ist, ABER ich habe immer mit pathinfo mir die Dateiendung ausgelesen, mit der das Bild weiter gespeichert wird... diese lautet aber nun auch .txt

Als Alternative hatte ich mir überlegt jedes Bild mit JD neu zu berrechnen und als JPG abzuspeichern ABER bei Bildern wie PNG und GIF gehen dann die Transparenzen über den Jordan und ich muss ja auch wissen mit welchem imagecreatefrom ich die Datei importieren muss.

Hat jemand Lösungsvorschläge? Oder einfach eine Fehlermeldung ausgeben wenn die Dateieindung nicht jpg, jpeg, gif, png oder bmp ist (Habe ich eine Endung vergessen?)

Gruß
Markus
Mit Zitat antworten
  #2 (permalink)  
Alt 09-02-2009, 08:48
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Benutz imagemagick.
Mit Zitat antworten
  #3 (permalink)  
Alt 09-02-2009, 10:20
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ghostgambler
Benutz imagemagick.
Im Gegensatz zu GD leider nicht auf dem Webserver vorhanden wo das Script zum Einsatz kommen soll. Daher habe ich micht für die Filterung der Dateiendungen entschieden und bmp Dateien ausgeschlossen.

Das Script an sich ist fertig, aber wahrscheinlich habe ich es viel zu kompleziert geschrieben. Ihr könnt ja mal einen Blick drauf werfen, habe die einzelnen Schritte direkt im Quellcode kommentiert, vor dem Script ist noch eine Überprüfung geschaltet ob überhaupt eine Datei gesendet wurde. Kann ich irgendwie noch die Qualität der Thumbs erhöhen? Vor allem bei gif Bildern ist die Quali der Thumbs sehr schlecht.

PHP-Code:
$temp_pic $_FILES['userfile']['tmp_name'];         
$file_path pathinfo($_FILES['userfile']['name']);
$file_info getimagesize($temp_pic);
if(!isset(
$file_info['mime'])){
   
$pic_info .= '<h1>Die Datei, die Du ausgew&auml;hlt hast, war kein Bild.</h1>';
}elseif(
$_FILES['userfile']['size'] >= '2100000'){
   
$pic_info .= '<h1>Die Datei, die Du ausgew&auml;hlt hast, ist zu gro&szlig;.</h1>';
}elseif(
   
$file_path['extension'] == 'gif' 
   
OR $file_path['extension'] == 'jpg'
   
OR $file_path['extension'] == 'jpeg' 
   
OR $file_path['extension'] == 'png'
){
   
//Speichern des Bildtypens, IP und Uploadzeit
   
mysql_query("
   INSERT INTO `lcms_picup` 
   (`typ`,`ip`,`time`) 
   VALUES 
   ('"
.$file_path['extension']."','".$_SERVER['REMOTE_ADDR']."','".time()."')");

   
//Weil ich einen wirklich einmaligen Dateinamen haben wollte, aber auch das Durchblättern 
   //der Bilder durch einfaches runterzählen verhindern wollte: Zufallszahl + id aus 
   //der Datenbank
   
$file_name rand(100000999999).mysql_insert_id();
   
mysql_query("
      UPDATE `lcms_picup` 
      SET `name`='"
.$file_name."' 
      WHERE (`id`='"
.mysql_insert_id()."')
   "
);
   
$target_name 'picupload/images/org/'.$file_name.'.'.$file_path['extension'];
   
rename($temp_pic$target_name);

   
//Hier wird geprüft welche Thumbs erstellt werden
   
if($file_info[0] > 100){
      
$h round($file_info[1] / ($file_info[0] / 100));
      
$thumb[100] = $h;
      if(
$file_info[0] > 640){
         
$h round($file_info[1] / ($file_info[0] / 640));
         
$thumb[640] = $h;
         if(
$file_info[0] > 800){
            
$h round($file_info[1] / ($file_info[0] / 800));
            
$thumb[800] = $h;
         }                    
      }
   }

   
//erstellen der Thumbs
   
if(isset($thumb)){
      foreach (
$thumb as $width => $height){
         if(
$file_path['extension'] == 'jpg' OR $file_path['extension'] == 'jpeg'){
            
$im imagecreatetruecolor($width$height);
            
$source imagecreatefromjpeg($target_name);
            
imagecopyresized($im$source0000$width$height$file_info[0], $file_info[1]);
            
$thumb_name 'picupload/images/'.$width.'/'.$file_name.'.jpg';
            
imagejpeg($im$thumb_name);
            
imagedestroy($im);
         }

         
//Das gleiche dann noch mit gif und png

      
}
   }
}else{
$pic_info .= '<h1>Die Datei hat eine falsche Dateiendung ('.$file_path['extension'].')!</h1>';


Geändert von Laire (09-02-2009 um 10:22 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 09-02-2009, 12:55
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

getimagesize sagt dir doch, von welchem Typ das ist. Dann kannst du auch wieder deine eigene Dateiendung verwenden.
Mit Zitat antworten
  #5 (permalink)  
Alt 09-02-2009, 13:49
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jupp, aber momentan schwanke ich zwischen: Auch jedem DAU wie mir es recht zu machen, oder einfach drauf bestehen, das die Dateien die richtige Endung haben ;-)

Welches Risiko gehe ich eigentlich ein, indem ich die Ordner in denen die Bilder abgespeichert werden auf die Rechte 777 setzte?
Mit Zitat antworten
  #6 (permalink)  
Alt 09-02-2009, 14:50
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Welches Risiko gehe ich eigentlich ein, indem ich die Ordner in denen die Bilder abgespeichert werden auf die Rechte 777 setzte?
Wenn du auf einem Server mit mehreren Webhostern bist, darf jeder andere User auf das Verzeichnis zugreifen.
Mit Zitat antworten
  #7 (permalink)  
Alt 09-02-2009, 15:40
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm muessen denn die Ordner fuer diese Funktion so weitreichende Berechtigungen haben?
Mit Zitat antworten
  #8 (permalink)  
Alt 09-02-2009, 16:59
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn du bei einem vernünftigen Hoster bist: Nein.
Dann reicht 770 oder sogar 700.
Mit Zitat antworten
  #9 (permalink)  
Alt 09-02-2009, 17:22
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

0750 wird auch immer wieder gern genommen
Oft sind ja httpd und PHP-Script Owner unterschiedlich, aber in der selben Gruppe.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #10 (permalink)  
Alt 09-02-2009, 17:33
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok werde es testen vielen Dank fuer die Tipps, wenn ich jetzt noch Hilfe in meinem anderen Thread bekomme, bin ich gluecklich
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:26 Uhr.