Thomas: Bilder verkleinern

Hallo zusammen,
DAs folgende Script sollte die Bilder im angegebenen Ordner auslesen und automatisch verkleinern, doch es geschieht nichts wenn ich das script ausführe. Weiss jemand an was es liegen könnte...?

Vielen Dank

<?php  
if(isset($_POST["submit"]))  
{  
$ordner = "$_POST[ordnerin]";  
$handle = opendir($ordner);  
while ($file = readdir ($handle)) {  
    if($file != "." && $file != "..") {  
            $compl = $ordner."/".$file;  
$bild="/$_POST[ordnerin]/".$file;  
$size=getimagesize($bild);  
             $breite=$size[0];  
             $hoehe=$size[1];  
                 $neueHoehe=500;  
                 $neueBreite=intval($breite*($neueHoehe/$hoehe));  
                 $altesBild=ImageCreateFromJPEG($bild);  
                 $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);  
                 imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);  
                 mkdir("$_POST[ordnerout]", 0777);  
     ImageJPEG($neuesBild,"$_POST[ordnerout]/".$file);  
    }  
}  
}  
?>
  1. Hello,

    Hallo zusammen,
    DAs folgende Script sollte die Bilder im angegebenen Ordner auslesen und automatisch verkleinern, doch es geschieht nichts wenn ich das script ausführe. Weiss jemand an was es liegen könnte...?

    Vielen Dank

    <?php

    if(isset($_POST["submit"]))
    {
    $ordner = "$_POST[ordnerin]";
    $handle = opendir($ordner);

    while ($false !== ($file = readdir ($handle)))
      {

    if($file != "." && $file != "..")

    {

    $compl = $ordner."/".$file;

    $bild="/$_POST[ordnerin]/".$file;   ## gefährliche Sache...
              $size=getimagesize($bild);
              $breite=$size[0];
              $hoehe=$size[1];
              $neueHoehe=500;
              $neueBreite=intval($breite*($neueHoehe/$hoehe));
              $altesBild=ImageCreateFromJPEG($bild);
              $neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
              imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
              mkdir("$_POST[ordnerout]", 0777);
              ImageJPEG($neuesBild,$_POST[ordnerout]."/.$file);
    ###                            ---------------------------
          }

    }
    }
    ?>

      
    $\_POST['irgendwas'] in die Pfade aufzunehmen, ist eine gefährliche Sache!  
      
      
      
      
    Harzliche Grüße vom Berg  
    <http://bergpost.annerschbarrich.de>  
      
    Tom
    
    -- 
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen  
    Nur selber lernen macht schlau  
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)  
      
    ![](http://bitworks.de/~selfHTML/Virencheck.gif)  
    
    
  2. Hallo Thomas,

    [code lang=php]
    if(isset($_POST["submit"]))

    [...]

    $ordner = "$_POST[ordnerin]";

    Gibt es eine Konstante
        ordnerin
    Wenn ja, was steht drin?
    Warum überprüfst Du nicht, ob diese Variable gesetzt ist?
    Warum kopierst Du diese Variable um? Siehe https://forum.selfhtml.org/?t=163289&m=1063287.

    ungeprüft und ungefiltert wird ein Verzeichnis geöffnet, es könnte überall
    auf dem Server sein. Nett.

    $handle = opendir($ordner);

    Und ohne zu testen, ob opendir() erfolgreich war, versuchst Du zu lesen.

    while ($file = readdir ($handle)) {
        if($file != "." && $file != "..") {
                $compl = $ordner."/".$file;

    Wiederum hast Du Deine gefährliche, ungefilterte und ungeprüfte Variable, die
    Du wegen zwei Slashes in eine Zeichenkette packst. Du solltest gegen eine
    Liste erlaubter Verzeichnisse prüfen.

    $bild="/$_POST[ordnerin]/".$file;

    Gleiches Spiel mit der Konstanten ordnerout ...

    mkdir("$_POST[ordnerout]", 0777);

    dazu der Erfolg nicht überprüft ...
    Es gibt viele Fehlermöglichkeiten und viel zu tun.

    Freundliche Grüße

    Vinzenz

    1. echo $begrüßung;

      $ordner = "$_POST[ordnerin]";
      Gibt es eine Konstante
          ordnerin
      Wenn ja, was steht drin?

      In diesem Fall sucht PHP nicht zunächst nach einer Konstanten namens ordnerin. Hier wird gleich ordnerin als String angesehen. Anders verhält es sich, bei

      $ordner = $_POST[ordnerin];

      wenn also $_POST[ordnerin] nicht in einem ""-String steht. Ein auf E_ALL stehendes error_reporting "beschwert" sich nur bei der Nicht-""-Variante.

      http://de2.php.net/manual/en/language.types.array.php#language.types.array.donts beschreibt das in aller Ausführlichkeit, besonders die "Note" kurz vor dem Abschnitt "Converting to array" geht auf diese Ausnahme ein.

      Wenn es eine Notwendigkeit gäbe, den Wert umzukopieren, wäre

      $ordner = $_POST['ordnerin'];

      die zu bevorzugende Schreibweise.

      echo "$verabschiedung $name";

      1. Hallo dedlfix,

        $ordner = "$_POST[ordnerin]";
        In diesem Fall sucht PHP nicht zunächst nach einer Konstanten namens ordnerin. Hier wird gleich ordnerin als String angesehen. Anders verhält es sich, bei

        $ordner = $_POST[ordnerin];

        argh ja! Ich habe an dieser Stelle die Anführungszeichen außen völlig übersehen.
        Danke für die korrigierenden Hinweise.

        Freundliche Grüße

        Vinzenz

        1. Hello,

          $ordner = "$_POST[ordnerin]";

          argh ja! Ich habe an dieser Stelle die Anführungszeichen außen völlig übersehen.
          Danke für die korrigierenden Hinweise.

          Darüber hatten wir neulich erst diskuterit und wie unsinnig diese arg(h) *g* verwirrende unterschiedliche Behandlung seitens PHP ist. Mag sein, dass das ein nettes Spielchen der PHP-ler ist, aber für die Erstellung sicherer Programme ist es nicht hilfreich, wie Du eben selber (unfreiwillig, möchte ich annehmen) bewiesen hast.

          Eine einheitliche "sichtbare" Schreibweise, die den gewünschten Zweck genau deutlich macht, kann ich daher nur empfehlen. Vielleicht finden wir den Thread dazu noch wieder. Ich weiß leider nicht mehr, unter welchem Stichwort der lief.

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)