Probleme mit Upload bei IE

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit Upload bei IE

    Hallo,
    kann mir jemand bei meinem Problem helfen, bin echt schon am verzweifeln;

    Ich habe ein Upload Skript programmiert, bei dem der Benutzer zuerst die Anzahl der Bilder auswählen kann,die er hochladen möchte;
    danach ploppt ein neuer Submit Button auf, wo er seine Datei von der Festplatte auswählt; Danach muss er noch den Senden Button drücken und die Datei wird auf den Server hochgeladen und er erhält eine Email mit seinen Formulardaten (vorherige PHP Seite).

    Soweit so gut, das funzt auch alles mit dem Firefox bzw. mit dem Safari, nur der Internet Explorer bringt die Fehlermeldung "Es dürfen nur .jpeg ...hochgeladen werde" Obwohl es ja ein jpeg ist.

    Hier mal der Code:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="text-normal.css">

    <style type="text/css">
    <!--

    body {
    background-color: #CCCCCC;
    margin-left: 0px;
    margin-top: -12px;
    margin-right: 0px;
    margin-bottom: 0px;
    }
    -->
    </style></head>
    <body class="text">
    <table width="560" border="0" align="right" cellpadding="0" cellspacing="0">
    <tr align="center" valign="top">
    <td width="80" height="400"><div align="center"><img src="blind%20gif.gif" width="80" height="400"></div></td>
    <td width="480" height="400" valign="middle" background="hg.png"> <?




    ?> Wie viele verschiedene Motive möchtest Du hochladen?<br> <form name="Motivanzahl" method="post" action="<?php echo $PHP_SELF; ?>">

    <div align="center">
    <select name="Motivanzahl" size="1" class="text" id="Motivanzahl">
    <option value="1">1 Motiv</option>
    <option value="2">2 Motive</option>
    <option value="3">3 Motive</option>
    <option value="4">4 Motive</option>
    <option value="5">5 Motive</option>
    </select>
    <input type="submit" name="regnum" value="bestellen">
    </div>
    </form>
    <form enctype="multipart/form-data" method="post" action="<?php echo $PHP_SELF; ?>">
    <?php
    if ($Motivanzahl == 1) {
    $Zahl="Motiv kann hochgeladen werden!";
    }
    else {
    $Zahl="Motive können hochgeladen werden!<br>\n";
    }
    if (isset($regnum)) {
    echo "<b>$Motivanzahl</b> "; //Motivanzahl ist die Variable aus dem ersten Eingabefeld & gibt an, wieviele Dateien hochgeladen werden;
    echo $Zahl;
    for ($i=1; $i<=$Motivanzahl; $i++) {
    echo "<input type=\"File\" name=\"myfile$i\"><br>\n";
    }
    echo "<input type='Submit' name='upload' value='Dateien senden'>";
    }
    $strFileName = $arrPostFiles[name];
    $strFileSize = $arrPostFiles[size];
    $strFileMIME = $arrPostFiles[type];
    $strFileTemp = $arrPostFiles[tmp_name];
    if (isset($upload)) {
    $Anzahlupload = count($HTTP_POST_FILES); //Anzahlupload ist eine freie Variable & gibt an, wieviele Dateien hochgeladen werden;
    if ($Anzahlupload == 1) {
    $Zahl2="Motiv wurde erfolgreich gesendet!<br>\n";
    }
    else {
    $Zahl2="Motive wurden erfolgreich gesendet!<br>\n";
    }
    foreach($HTTP_POST_FILES as $strFileName => $arrPostFiles) {
    if($arrPostFiles[type] != 'image/jpg' && $arrPostFiles[type] != 'image/jpeg' && $arrPostFiles[type] != "image/gif" && $arrPostFiles[type] !="image/tif") {
    $err[] = "Leider gabe es bei dem Upload einen Fehler!<br>Es dürfen nur .jpeg, .tif, .gif und .jpg Dateien hochgeladen werden.<br>\n";
    }
    if ($arrPostFiles[size] < 0 && $arrPostFiles[size] > 1200000) {
    $err[] = "Leider gabe es bei dem Upload einen Fehler!<br>Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 1MB <br>\n!";
    }
    if(empty($err)) {
    $strFileName = $arrPostFiles[name];
    $strFileSize = $arrPostFiles[size];
    $strFileMIME = $arrPostFiles[type];
    $strFileTemp = $arrPostFiles[tmp_name];
    copy ("$strFileTemp", "upload/$strFileName");
    echo "<ul>";
    echo "<li>Größe: $strFileSize Bytes<br>";
    echo "<li>Dateityp: $strFileMIME<br>";
    echo "</ul>";
    } /* end if */
    else {
    foreach($err as $error)
    echo "$error<br>";
    }
    } /* end foreach */
    echo '<a href="leer.htm">Startseite</a>';
    }

    if (isset($_POST['upload']) && empty($err)) {

    $mailbody1="Vielen Dank für Deinen Upload\n\n";
    @mail("$Email", "Dein Upload", $mailbody1, "From: xx");
    echo "<b>$Anzahlupload</b> ";
    echo $Zahl2;
    echo "Upload war erfolgreich.!<br>\n";


    }
    else {
    echo "";
    }


    ?>
    </form></td>
    </tr>
    </table>
    <p>&nbsp;</p>
    </body>
    </html>

  • #2
    laß dir mal nach dem upload mit dem IE per print_r den inhalt von $_FILES ausgeben, soweit ich mich erinner, gibt der IE einen etwas anderen mime-typ an (pjpeg oder so).
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      danke für deine schnelle antwort;
      also über den print_r befehl bekomme ich im IE bei der Ausgabe eine 1 dargestellt;
      da mir der Befehl nicht geläufig ist, weiß ich jetzt nicht, was ich davon halten soll;

      Kommentar


      • #4
        die "fortgeschrittene" schreibweise:
        PHP-Code:
        echo '<pre>'.print_r($_FILES,true).'</pre>'
        und hier posten.

        Kommentar


        • #5
          der Hund hatte recht; habe jetzt image/pjpeg noch eingefügt und jetzt funzt alles auch im ie;

          Gibt es auch eine Besonderheit für das .tiff Format. Das akzeptiert der Internet Explorer nämlich auch nicht. Safari und Firefox hingegen schon.

          Kommentar


          • #6
            guck doch rein, was übertragen wird!

            Kommentar


            • #7
              das wird bei nem tiff ausgegeben:

              Array
              (
              [myfile1] => Array
              (
              [name] => TRAKTOR.TIF
              [type] => application/octet-stream
              [tmp_name] => /home/www/htdocs/sides.de/tmp/php696Kv6
              [error] => 0
              [size] => 378732
              )

              )

              Kommentar


              • #8
                tja.. wenn du aber application/octet-stream erlaubst, wird man dir jeden mist hochladen dürfen. ein hoch auf die super-browser dieser welt!

                Kommentar


                • #9
                  @topicstarter
                  Ganz jeden Mist wird man dir schon nicht hochladen können. Du solltest dich eh nicht auf diese Daten allzu sehr verlassen.
                  Du solltest das File bevor du es aus dem tmp Upload Verzeichnis herausverschiebst mit einer Bildfunktion prüfen image. z.b. könntest du versuchen die Bildgrösse aus dem temporären Bild auszulesen getimagesize(). Wenn diese Fkt dann scheitert dann weisst du dass du etwas mit gefakten Types oder Erweiterungen erhalten hast.
                  Einer solchen Prüfung würde ich ich grundsätzlich eher mehr vertrauen. Denn der Type und der Name werden vom Client übermittelt und sind daher ohne weiteres fälschbar.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    jahlives, du hast vollkommen recht.

                    Kommentar


                    • #11
                      selbst wenn jemand eine .exe datei hochladen würde, das verzeichnis aber über htaccess passwortgeschützt und der ordner nur lese und schreibrechte besitzt, dürfte diese doch keinen schaden anrichten können, oder?

                      Kommentar


                      • #12
                        selbst wenn jemand eine .exe datei hochladen würde, das verzeichnis aber über htaccess passwortgeschützt und der ordner nur lese und schreibrechte besitzt, dürfte diese doch keinen schaden anrichten können, oder?
                        Willst es wohl unbedingt ausprobieren, was ?

                        Trotzdem würde ich den genannten Check machen. Du willst doch keine exe Files auf dem Server haben (auch wenn das Verzeichnis geschützt ist)

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          eigentlich möchte ich schon auf nummer sicher gehen:-);
                          hab das mit dem getimagesize befehl nur nicht hinbekommen.

                          hier mal mein code:
                          $bild = getimagesize($FILES);
                          echo $bild[3]; // damit will ich erstmal sehen ob es eine grafik ist; es wird aber nichts wiedergegeben..

                          Kommentar


                          • #14
                            PHP-Code:
                            $bild getimagesize($FILES); 
                            Au weia

                            Also zuerst solltest du wissen wie ma Uploads handelt mit PHP. Du versuchst mit deiner Zeile die Grösse eines Arrays zu bestimmen und die gibts nur in Elementen und nicht in Pixeln

                            Mal so als Anstoss
                            PHP-Code:
                            //Zuerst mal die Vars initialisieren. Ist immer ne gute Idee
                            $width NULL;
                            $height NULL;

                            list(
                            $width,$height) = @getimagesize($_FILES['name_des_feldes_im_html_code']['tmp_name']);

                            if(
                            $width===NULL || $height===NULL){
                               die(
                            'Keine gültige Bilddatei');
                            }else{
                              
                            //dein weiterer Code

                            Gruss
                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar

                            Lädt...
                            X