Micha12345: Upload Script

Hallo Experten,

habe ein problem mit einem Upload Script was ich vor einigen tagen hier im Forum gefunden habe.

Folgendes, ich möchte ein Bild in einen Ordner Uploaden.
Der Ordner heißt: uploadlogoklein.

Es kommt die Meldung nachdem ich auf Datei senden geklickt habe:
Die Datei wurde erfolgreich gespeichert.
Datei Eins.jpg erfolgreich hochgeladen:
Größe: 6550 Bytes
MIME: image/pjpeg

Hört sich ja gut an aber im Ordner ist keine Eins.jpg! Auch wenn ich im Browser auf Aktualisieren klicke ist nichts drin.

Was habe ich falsch gemacht? Könnt Ihr mich bitte auf den richtigen weg bringen??? Vielen dank schon mal im voraus! Gruß, Micha

Hier das Script:

<html>
<head>
<title>upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form enctype="multipart/form-data" method="post" action="<?PHP echo $_SERVER['PHP_SELF']?>">
<input type="file" name="logoklein"></input>
<input type="Submit" name="uploadlogoklein" value="Dateien senden">
</form>

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

if($_Files['$logoklein'] !="logoklein")
 {
 $uploadordner = "uploadlogoklein/";
 $sizebytes = "40000";

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

if(($_FILES['logoklein']['type']!="image/jpeg") && ($_FILES['logoklein']['type']!="image/pjpeg") && ($_FILES['logoklein']['type']!="image/x-png") && ($_FILES['logoklein']['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>";
    }
   }
  }
 }
}
?>
</body>
</html>

  1. Hello,

    if(move_uploaded_file ($_Files['$strFileTemp'], "$uploadordner/".strtolower($_FILES['$strFileName']).""));

    Ich habe es nur kurz überflogen und nicht genauer hingeguckt. Das müsstest Du bitte mal selber machen.
    Wird denn irgendwo ein Array "$_Files" angelegt?

    MMn müsste das "$_FILES" (achte auf Groß-/Kleinschreibung) heißen.

    Und schalte zum debuggen bitte Deine Fehlermeldungen ein.

    error_reporting(E_ALL);
       ini_set('display_errors',1);

    Dann müsste PHP Dich anmeckern, wo was nicht stimmt... :-)

    Das Script ist übrigens nicht fertig entwickelt.
    Als erstes sollte man in einem Uploadscript immer fragen:

    if(isset($_FILES[$formfieldname]['error']) and $_FILES[$formfieldname]['error'] === 0)
       {
          ### nur jetzt wurde ein einzelnes File ordnungsgemäß hochgeladen
       }

    $formfieldname ist bitte mit dem Namen aus dem Formular zu füllen. Man achte auch hier auf Groß-/Kleinschreibung

    Ein harzliches Glückauf

    Tom vom Berg

    http://bergpost.annerschbarrich.de

    --
    Nur selber lernen macht schlau
    1. Hello,

      muss mich noch selber ergänzen:

      if(($_FILES['logoklein']['type']!="image/jpeg") && ($_FILES['logoklein']['type']!="image/pjpeg") && ($_FILES['logoklein']['type']!="image/x-png") && ($_FILES['logoklein']['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>";
         }

      Dieses Script ist gemeingefährlich für Deinen Server.
      Wenn ich das richtig sehe, kann man damit locker PHP-Files auf Deinen Webspace laden und wenn man die dann sogar ausführen lassen kann (HTTP-Zugang zum Zielverzeichnis), ist der Server massiv gefährdet.

      Außerdem solltest Du hier im Forumsarchiv mal wegen der Verwendung der PHP-Variablen

      $_SERVER['PHP_SELF']

      suchen. Die stellt ebenfalls ein Gefährdungsportential für Deine Seite dar, wenn Du sie unbedacht einsetzt. Hiermist aber nicht primär der Server, sond sind die Daten des Besuchers gefährdet.

      Ein harzliches Glückauf

      Tom vom Berg

      http://bergpost.annerschbarrich.de

      --
      Nur selber lernen macht schlau
      1. Hallo Tom vom Berg,

        vielen Dank für Deine schnellen Antworten.

        Ich werde es mal versuchen und hoffe das ich auch den richtigen durchblick bekomme :-)

        Gruß,

        Micha