fritzchen: Upload für PHP 5

Hallo alle zusammen.

Ich bräuchte für folgendes UploadScript ein bißchen Hilfe. Warum klappt dieses Script nicht unter PHP 5? Das Verzeichnis upload ist vorhanden.

<?php
if(isset($_POST['sendfiles']))
{
 if($datei =="")
 {
  echo "Keine Datei ausgewählt.";
 }

if($datei !="")
 {
 $uploadordner = "upload/";
 $sizebytes = "40000";

foreach($_FILES as $strFieldName => $arrPostFiles)
  {
   $strFileName = $arrPostFiles['name'];
   $intFileSize = $arrPostFiles['size'];
   $strFileMIME = $arrPostFiles['type'];
   $strFileTemp = $arrPostFiles['tmp_name'];

if(($_FILES['datei']['type']!="image/jpeg") && ($_FILES['datei']['type']!="image/pjpeg") && ($_FILES['datei']['type']!="image/x-png") && ($_FILES['datei']['type']!="image/gif"))
   {
    echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
      echo "<tr><td>&nbsp;</td></tr>";
      echo "<tr><td><span class="info">Fehler! Falscher Dateityp.</span></td>";
      echo "</tr></table>";
   }
   else if($intFileSize > $sizebytes)
   {
    echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
      echo "<tr><td>&nbsp;</td></tr>";
      echo "<tr><td><span class="info">Fehler! Die ausgewählte Datei ist zu groß. Max.Größe: ".$sizebytes." byte.</span></td>";
      echo "</tr></table>";
   }
   else if(file_exists("$uploadordner/$strFileName"))
   {
    echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
       echo "<tr><td>&nbsp;</td></tr>";
      echo "<tr><td><span class="info">Eine Datei mit diesem Namen existiert bereits.<br>Bitte wählen Sie eine anderen Dateinamen.</span></td>";
      echo "</tr></table>";
   }
   else
   {
    move_uploaded_file ($strFileTemp, "$uploadordner/".strtolower($strFileName)."");
    echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
      echo "<tr><td>&nbsp;</td></tr>";
      echo "<tr><td><span class="info">Die Datei <b>".strtolower($strFileName)."</b> wurde erfolgreich gespeichert.</span></td>";
      echo "</tr></table>";
    echo "Datei <b>$strFileName</b> erfolgreich hochgeladen:";
    echo "<ul>";
    echo "<li>Größe: $intFileSize Bytes<br>";
    echo "<li>MIME: $strFileMIME<br>";
    echo "</ul>";
   }
  }
 }
}
?>
<form enctype="multipart/form-data" method="post" action="<?PHP echo $_SERVER['PHP_SELF']?>">
<input type="file" name="datei"></input>
<br>
<input type="Submit" name="sendfiles" value="Dateien senden">
</form>

Es wäre ganz toll wenn von euch mal einer draufschauen könnte und mir weiterhelfen könnte.

Vielen Dank schon mal im vorraus.

  1. Hallo!
    Woran scheiterts denn?
    Ohne Infos wird dir kaum wer helfen (wollen).

    --
    LG,
    Snafu
    1. Hallo.

      Ja, klar.
      Also, er sagt mir immer "Keine Datei ausgewählt".
      Ich weiß nicht warum.

      Wenn ich eine richtige Datei auswähle, sollte er doch in einen anderen Zweig die Prüfung erfolgen.
      Macht er aber nicht.

      Viele dank.

      1. Ich schätz mal register_globals ist off und du musst über $_FILES['datei']; zugreifen.

        --
        LG,
        Snafu
      2. echo $begrüßung;

        Also, er sagt mir immer "Keine Datei ausgewählt".
        Ich weiß nicht warum.

        Vielleicht wird dir manches klarer, wenn du grundlegende Debug-Techniken anwendest. Kontrollausgaben von Variableninhalten helfen den Irrtum zwischen Vorstellung und Wirklichkeit aufzuklären. Für einfache Variablen reicht oft ein echo, präzisere Angaben bekommt man mit var_dump(). Für komplexe Typen, wie Arrays, eignet sich auch noch print_r(). Das ist nicht ganz so ausführlich wie var_dump(), dafür aber etwas übersichtlicher. Apropos, ein <pre> davor ist auch nicht zu unterschätzen.

        Außerdem hilft es immer, beim Entwickeln das error_reporting auf E_ALL zu stellen (und display_errors auf on), denn damit bekommt man Meldungen über Zugriffe auf nicht vorhandene Variablen angezeigt, die PHP sonst unterdrückt.

        echo "$verabschiedung $name";

  2. he

    if($datei =="")
    {
      echo "Keine Datei ausgewählt.";
    }

    Wo erhält die Variable $datei ihren Inhalt? Was sagt phpinfo() zu register_globals?

    gruß bascombe

    1. he

      if($datei =="")
      {
        echo "Keine Datei ausgewählt.";
      }

      Wo erhält die Variable $datei ihren Inhalt?

      Die Variable datei wird aus dem Formular gefüllt.
      register_globals steht auf OFF

      Was sagt phpinfo() zu ?

      gruß bascombe

      1. Moin!

        Wo erhält die Variable $datei ihren Inhalt?

        Die Variable datei wird aus dem Formular gefüllt.

        Nein, wird sie nicht!

        register_globals steht auf OFF

        Deswegen nicht.

        Du hast die Methode, auf $_POST zuzugreifen, doch schon halb angewendet? Warum nicht vollständig? $_POST['datei'] für das Formularfeld mit Namen "datei".

        Allerdings: $_FILES['datei'] für Dateiuploadfelder. Und dann ist noch zu berücksichtigen, dass $_FILES['datei'] ein Array enthält, in dem diverse Informationen enthalten sind.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Hallo.

          Vielen Dank für die Infos. Habe das Script noch erweitert aber leider klappt es noch immer nicht so richtig. Egal was ich auswähle er bleibt immer bei der Meldung "Keine Datei ausgewählt."

          <?php
          if(isset($_POST['sendfiles']))
          {
           if($_POST['$datei'] =="")
           {
            echo "Keine Datei ausgewählt.";
           }

          if($_POST['$datei'] !="")
           {
           $uploadordner = "upload/";
           $sizebytes = "40000";

          foreach($_FILES as $strFieldName => $arrPostFiles)
            {
             $strFileName = $arrPostFiles['name'];
             $intFileSize = $arrPostFiles['size'];
             $strFileMIME = $arrPostFiles['type'];
             $strFileTemp = $arrPostFiles['tmp_name'];

          if(($_FILES['datei']['type']!="image/jpeg") && ($_FILES['datei']['type']!="image/pjpeg") && ($_FILES['datei']['type']!="image/x-png") && ($_FILES['datei']['type']!="image/gif"))
             {
              echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
                echo "<tr><td>&nbsp;</td></tr>";
                echo "<tr><td><span class="info">Fehler! Falscher Dateityp.</span></td>";
                echo "</tr></table>";
             }
             else if($intFileSize > $sizebytes)
             {
              echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
                echo "<tr><td>&nbsp;</td></tr>";
                echo "<tr><td><span class="info">Fehler! Die ausgewählte Datei ist zu groß. Max.Größe: ".$sizebytes." byte.</span></td>";
                echo "</tr></table>";
             }
             else if(file_exists("$uploadordner/$strFileName"))
             {
              echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
                 echo "<tr><td>&nbsp;</td></tr>";
                echo "<tr><td><span class="info">Eine Datei mit diesem Namen existiert bereits.<br>Bitte wählen Sie eine anderen Dateinamen.</span></td>";
                echo "</tr></table>";
             }
             else
             {
              if(move_uploaded_file ($_Files['$strFileTemp'], "$uploadordner/".strtolower($_FILES['$strFileName']).""));
              {
              echo "<table align="center" cellspacing="2" cellpadding="2" border="0">";
                echo "<tr><td>&nbsp;</td></tr>";
                echo "<tr><td><span class="info">Die Datei <b>".strtolower($_FILES['$strFileName'])."</b> wurde erfolgreich gespeichert.</span></td>";
                echo "</tr></table>";
              echo "Datei <b>$strFileName</b> erfolgreich hochgeladen:";
              echo "<ul>";
              echo "<li>Größe: $intFileSize Bytes<br>";
              echo "<li>MIME: $strFileMIME<br>";
              echo "</ul>";
              }
             }
            }
           }
          }
          ?>
          <form enctype="multipart/form-data" method="post" action="<?PHP echo $_SERVER['PHP_SELF']?>">
          <input type="file" name="datei"></input>
          <br>
          <input type="Submit" name="sendfiles" value="Dateien senden">
          </form>

          Vielen Dank für die Mühe.

          1. he

            if($_POST['$datei'] =="")
            {
              echo "Keine Datei ausgewählt.";
            }

            <input type="file" name="datei"></input>

            "Allerdings: $_FILES['datei'] für Dateiuploadfelder. Und dann ist noch zu berücksichtigen, dass $_FILES['datei'] ein Array enthält, in dem diverse Informationen enthalten sind."

            gruß bascombe

            1. he

              if($_POST['$datei'] =="")
              {
                echo "Keine Datei ausgewählt.";
              }

              <input type="file" name="datei"></input>

              "Allerdings: $_FILES['datei'] für Dateiuploadfelder. Und dann ist noch zu berücksichtigen, dass $_FILES['datei'] ein Array enthält, in dem diverse Informationen enthalten sind."

              Hm, sorry aber ich verstehe irgendwie nicht was du mir damit sagen willst.

              gruß bascombe

              1. he

                if($_POST['$datei'] =="")
                {
                  echo "Keine Datei ausgewählt.";
                }

                <input type="file" name="datei"></input>

                "Allerdings: $_FILES['datei'] für Dateiuploadfelder. Und dann ist noch zu berücksichtigen, dass $_FILES['datei'] ein Array enthält, in dem diverse Informationen enthalten sind."

                Hm, sorry aber ich verstehe irgendwie nicht was du mir damit sagen willst.

                Du hast ein input-Feld vom Typ "file" eingebunden. Deine Daten stecken also im Array $_FILES und nicht im Array $_POST.

                Bitte kein TOFU.

                gruß bascombe