SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.12.2004, 14:46:56
JansonChristian JansonChristian ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Landshut
Beiträge: 98
Größe eines Bildes bei Bildupload ändern

Hi,

ich mal wieder.
Habe auf meiner Homepage einen Bildupload über ein Formular.
Nun meine Frage:
Wie kann ich die größe des zu speichernden Bildes ändern, zum Beispiel total klein als vorschau bild oder einfach große Bilder auf immer die selbe größe speichern.
Also nicht die Bildgröße bei der Ausgabe, sonder das Bild gleich in einer anderen größe Speichern.

Geht das überhaupt?

Momentan speichere ich die Bilder noch so:

if ($image) {
if ($image_type == "image/pjpeg"
or $image_type == "image/gif") {
if ("image/pjpeg" == $image_type )
$extension = ".jpeg";
else $extension = ".gif";
$dat=$_SERVER['DOCUMENT_ROOT']."/anzeigen/image/";
$filename = $dat . $anz_id . $aid . $extension;
if (is_uploaded_file($image) &&
copy ($image,$filename)) {
$bildname="image/". $anz_id . $aid . $extension;
$sqlbild="update anzeigen set image='$bildname' where anz_id=$anz_id";
if (!mysql_query($sqlbild)) {
header ("Location: error.php");
}
} else {
header ("Location: error.php");
}
}
}

Kann mir da jemand helfen?

Mfg
Christian
Mit Zitat antworten
  #2  
Alt 11.12.2004, 16:55:51
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Schau dir mal die Grafik-Funktionen und da speziell imagecopyresized() an.
Mit Zitat antworten
  #3  
Alt 12.12.2004, 14:57:51
Benutzerbild von Jürg
Jürg Jürg ist offline
Junior Member
 
Registriert seit: May 2003
Ort: CH Zürich
Alter: 66
Beiträge: 352
Jürg eine Nachricht über Skype™ schicken
Mit dem habe ich mich auch schon rumgeschlagen. So simpel ist das nicht. Darum ein wenig Code zum Submit:
PHP-Code:
// prüfen vor hochladen --------------------
if (isset ($submit)) {
  
$dateiname $HTTP_POST_FILES['datei']['name'] ;
  
$dateitype $HTTP_POST_FILES['datei']['type'] ;
  
$dateisize $HTTP_POST_FILES['datei']['size'] ;
  
//  echo $dateiname.' '.$dateitype.' '.$dateisize ;
    
if ( $dateiname == "" ) {
    
$fehlermeldung '<span class="rot"><br /><br />
        Du musst eine Datei angeben!<br /><br /></span>'
;
  }
  elseif ( 
$dateisize '209600') {
    
$fehlermeldung '<span class="rot"><br /><br />
        Deine Datei überschreitet die erlaubte
        Datei-Grösse von 200 kByte!<br /><br /></span>'
;
  }
  elseif ( 
strlen$dateiname ) > '25') {
    
$dateinamengroesse strlen("$dateiname")-25;
    
$fehlermeldung '<span class="rot"><br /><br />
        Der Dateiname überschreitet die maximal erlaubte Zeichenlänge
        um <strong>'
.$dateinamengroesse.'</strong>Zeichen!<br /><br  /></span>';
  }
  elseif  ( 
$dateitype == 'image/jpeg' || $dateitype == 'image/x-png' ) {
    
//Wandelt einige Sonderzeichen um
    
$dateiname1 strtr("$dateiname"" äöüß""_aous");
    
//Wandelt den Dateinamen in Kleinbuchstaben um
    
$dateiname2 strtolower("$dateiname1");
    
    
$dateivorhanden file_exists($bildlink.'/'.$dateiname2);

    if ( 
$dateivorhanden == '1' ) {
      
$fehlermeldung '<span class="rot"><br /><br />
            Eine Datei mit dem Dateinamen <strong>'
.$dateiname2.'</strong> ist bereits
            vorhanden, bitte wähle einen anderen Namen.<br /><br /></span>'
;
    }
    else {
        
// hochladen der Ursprungsdatei -----------------------
            
copy$datei $bildlink.'/'.$dateiname2 );

            
// nun grösse bestimmen und berechnen
            
$gross  getimagesize$bildlink.'/'.$dateiname2 ) ;
          
$breite $gross[0] ;
          
$hoehe  $gross[1] ;
          
$typ    $gross[2] ;
          
            
$hoehe_norm $hoehe 200 $breite ;
            
$image_norm imagecreatetruecolor200 $hoehe_norm ) ;

            
$hoehe_small $hoehe 50 $breite ;
            
$image_small imagecreatetruecolor50 $hoehe_small ) ;
            
            
// neue Bildnamen
            
$bild_s split("[.]",$dateiname2);
            
$dateiname2_norm  $bild_s[0].'_norm.'.$bild_s[1] ;
            
$dateiname2_small $bild_s[0].'_small.'.$bild_s[1] ;

            
// Normbild erstellen
            
switch ($typ) {
                case 
2:
                
$image imagecreatefromjpeg$bildlink.'/'.$dateiname2 ) ;
                    break;
                case 
3:
                    
$image imagecreatefrompng$bildlink.'/'.$dateiname2 ) ;
                    break;
            }
            
imagecopyresampled($image_norm$image0,00,0,200,$hoehe_norm,$breite,$hoehe);

            switch (
$typ) {
                case 
2:
                  
imagejpeg($image_norm$bildlink.'/'.$dateiname2_norm 100 );
                  break;
              case 
3:
                  
imagepng($image_norm$bildlink.'/'.$dateiname2_norm );
                  break;
            }

            
// Smallbild erstellen
            
switch ($typ) {
                case 
2:
                    
$image imagecreatefromjpeg$bildlink.'/'.$dateiname2 ) ;
                    break;
                case 
3:
                    
$image imagecreatefrompng$bildlink.'/'.$dateiname2 ) ;
                    break;
            }
            
imagecopyresampled($image_small$image0,00,0,50,$hoehe_small,$breite,$hoehe);

            switch (
$typ) {
                case 
2:
                  
imagejpeg($image_small$bildlink.'/'.$dateiname2_small );
                  break;
              case 
3:
                  
imagepng($image_small$bildlink.'/'.$dateiname2_small );
                  break;
            }
            
            
// Ursprüngliches Bild löschen
            
unlink$bildlink.'/'.$dateiname2 ) ;
            
            
// DB eintragung
      
$query  "UPDATE tabelle SET ".$bildnummer." = '".$dateiname2."'
            WHERE id_mit = '"
.$id_mit."' " ;
      
mysql_query($query$conn);
      
$fehlermeldung '<br /><br />Dein Foto <strong>'.$dateiname2.'</strong> wurde erfolgreich abgeschickt!<br /><br />';
    }
  }
  else {
    
$fehlermeldung '<span class="rot"><br /><br />
        Es werden nur Dateien von folgendem Typ zum Upload akzeptiert:<br /><br />
    <strong>jpeg, jpg, jpe, png</strong><br /><br />
    Dein Datei-Typ: '
.$dateitype.'<br /><br /></span>';
  }
    
// auf 0 setzen ---------------------------
    
$submit "" $dateityp "" $dateiname "" $dateiname2 "" ;
    
$dateiname2_small "" ;
    
$hoehe "" $breite "" ;

__________________
www.zudila.ch
Mit Zitat antworten
  #4  
Alt 12.12.2004, 16:54:41
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Das Script sieht ganz in Ordnung aus. Ein paar Sachen sind mir trotzdem aufgefallen:
PHP-Code:
if ( $dateiname == "" ) {    //  if(empty($dateiname)) tut es auch

$dateinamengroesse strlen("$dateiname")-25;    //  Variablen werden nicht in " gesetzt

elseif  ( $dateitype == 'image/jpeg' || $dateitype == 'image/x-png' )    //  im Mozilla hat $dateitype bei jpeg Dateien den Wert image/pjpeg

if ( $dateivorhanden == '1' ) {    //  besser: if($dateivorhanden)

copy$datei $bildlink.'/'.$dateiname2 );    //  besser: move_uploaded_file() verwenden, dann ersparst du dir auch das unlink() 
Außerdem wird das Script nur mit ausgeschaltetem register_globals laufen.
Mit Zitat antworten
  #5  
Alt 13.12.2004, 12:55:12
Benutzerbild von Jürg
Jürg Jürg ist offline
Junior Member
 
Registriert seit: May 2003
Ort: CH Zürich
Alter: 66
Beiträge: 352
Jürg eine Nachricht über Skype™ schicken
Vielen Dank xabbuh
Ich habe die Verbesserungen vorgenommen.
Das mit dem "", peinlich!
Das mit dem image/pjpeg wusste ich nicht.
Das mit dem move_uploaded_file ist besser, jedoch unlink muss bleiben, sonst bleibt die Ursprungsdatei auf dem Server.
Zitat:
Außerdem wird das Script nur mit ausgeschaltetem register_globals laufen.
Das müsste ja gut sein, siehe auch:
PHP Referenz
__________________
www.zudila.ch
Mit Zitat antworten
  #6  
Alt 13.12.2004, 13:29:24
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zitat:
Original geschrieben von Jürg
Das mit dem move_uploaded_file ist besser, jedoch unlink muss bleiben, sonst bleibt die Ursprungsdatei auf dem Server.
Stimmt, habe das übersehen.

Zitat:
Das müsste ja gut sein, siehe auch:
PHP Referenz
Da habe ich mich in meinem Beitrag verschrieben. Dein Script läuft _nicht_ mit ausgeschaltetem register_globals.
Mit Zitat antworten
  #7  
Alt 13.12.2004, 13:47:54
Benutzerbild von Jürg
Jürg Jürg ist offline
Junior Member
 
Registriert seit: May 2003
Ort: CH Zürich
Alter: 66
Beiträge: 352
Jürg eine Nachricht über Skype™ schicken
Uns wieso läuft es nicht?
Im Formular verwende ich :
PHP-Code:
<form method="POST" action="'.$PHP_SELF.'" enctype="multipart/form-data" name="meldung">
...
<
input type="file" name="datei" size="80" />
... 
Im Script:
PHP-Code:
$dateiname $HTTP_POST_FILES['datei']['name'] ;
$dateitype $HTTP_POST_FILES['datei']['type'] ;
$dateisize $HTTP_POST_FILES['datei']['size'] ; 
Das müsste doch gehen?
PS: Mein Provider hat den Server auf register_globals ON.
__________________
www.zudila.ch
Mit Zitat antworten
  #8  
Alt 13.12.2004, 14:55:15
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Allein schon die Abfrage if($submit) oder so ähnlich wird fehlschlagen.
Außerdem sollte man $PHP_SELF durch $_SERVER['PHP_SELF'] ersetzen und statt dem Array $HTTP_POST_FILES das Array $_FILES verwenden.
Mit Zitat antworten
  #9  
Alt 13.12.2004, 15:20:18
Benutzerbild von Jürg
Jürg Jürg ist offline
Junior Member
 
Registriert seit: May 2003
Ort: CH Zürich
Alter: 66
Beiträge: 352
Jürg eine Nachricht über Skype™ schicken
Aha, jetzt wird es spannend.
Dem gehe ich nach und ändere es.
Wo finde ich ein Tutorial das genau das beschreibt?
Das Problem ist, es gibt zuviel unsauberen Code der immer nur abgeschrieben wird und sogar läuft.
__________________
www.zudila.ch
Mit Zitat antworten
  #10  
Alt 13.12.2004, 15:22:49
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Am besten ist es, denke ich, sich dazu Kapitel 27. Verwendung von Register Globals im Manual anzusehen.
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt