Prüfen auf Datentyp text/xml

  • hallo, wer weiss mit welchem php-code ich prüfen kann,
    ob der user die richtige datei ausgesucht hat, vom typ text/xml

    Code
    <form enctype="multipart/form-data" action="auswertung.php" method="POST">
                       <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    
    
    
    
                        Datei aussuchen:<br />
                         <input name="userfile" type="file">
                         <input type="submit" value="Datei senden">
                         </form>


    ich weiss net wie ich auf diesen type= file prüfen kann.... Danke im Vorraus

  • Beim hochladen einer Datei wirst du in deinem Skript Zugriff auf eine Superglobale (wie $_GET oder $_POST) haben, und zwar auf $_FILES.
    Dies enthält ein Array wie folgt:

    PHP
    <span class="syntaxdefault">array </span><span class="syntaxkeyword">(<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"nameDesInput"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> array </span><span class="syntaxkeyword">(<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"NameDerDatei.end"</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"mime/type"</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"tmp_name"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">"hier/liegt/die/Datei.temporär"</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"error"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">,<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">[</span><span class="syntaxstring">"size"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxcomment">// Dateigröße in Bytes <br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">)<br />)</span><span class="syntaxdefault"> </span>

    Hier haben wir unter anderem das Feld "type", in dem der mime-Type der Datei drinsteht. Nun können wir ganz einfach überprüfen ob es eine xml ist, indem wir uns die xml-mimeTyps ansehen und mit diesen Vergleichen:

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"userfile"</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"text/xml"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">||</span><span class="syntaxdefault"> $_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"userfile"</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> application</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">xml</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">...<br />}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    $warning</span><span class="syntaxkeyword">[]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Es sind nur XML-Dateien erlaubt!"</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>


    Gruß Dustin

  • soll ich diesen code mit dem array in meine auswertung.php reinschreiben??
    meine auswerung.php:


    oder in mein hauptprogramm.php wo das Formular zur Datei aussuchen ist? Danke

  • ich habe ein hauptprogramm, was nach einer bestellung die anmeldedaten zuerst
    verlangt dann sagt das die bestellung erfolgreich war und danach soll irgendeine datei geschickt werden, die vom typ text/xml !!!!! ist.
    ich habe eine auswertung.php wo die daten gespeichert werden und ausgegeben werden
    nach dem abschicken der datei:
    Dateityp:text/xml
    Dateiname:.....
    Dateigröße:....
    meine frage wohin welcher code? :)

  • also in die auswerung.php ?? :)


    aber irgendwie ist hier ein fehler, auf den ich nicht komme.. Danke

  • Du hast jetzt nicht ernsthaft

    Code
    array (
            ["userfile"] => array (
            ["name"] => "NameDerDatei.end",
            ["type"] => "mime/type",
            ["tmp_name"] => "hier/liegt/die/Datei.temporär",
            ["error"] => 0,
            ["size"] => // Dateigröße in Bytes
        )
    )

    in dein Skript geschrieben, oder? O_____o
    Das sollte doch nur zeigen, wie die $_FILES-Variabel aufgebaut ist..

  • Nein, es ist in keinster weise richtig :/
    Oder musst du bevor du auf $_GET und $_POST zugreifen kannst diese erst einmal mit einem Array befüllen?
    Wenn wir z.B. via Formular eine Datei hochladen, steht alles was wir über diese Datei wissen müssen in $_FILES, es ist also schon automatisch mit werten gefüllt.
    Woher sollst du auch sonst wissen, wo der Server die Datei temporär hingelegt hat? Wie Groß sie ist und welchen Mime-Type sie hat?
    Dein Code müsste also einfach so aussehen:

    PHP
    <span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"userfile"</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">] == </span><span class="syntaxstring">"text/xml" </span><span class="syntaxkeyword">|| </span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"userfile"</span><span class="syntaxkeyword">][</span><span class="syntaxstring">"type"</span><span class="syntaxkeyword">] == </span><span class="syntaxstring">"application/xml"</span><span class="syntaxkeyword">)<br />{<br />   echo </span><span class="syntaxstring">" <h3>Die Daten wurden erfolgreich &uuml;bertragen. </h3>"</span><span class="syntaxkeyword">;<br />   echo </span><span class="syntaxstring">" <br/>"</span><span class="syntaxkeyword">;<br /><br />   echo </span><span class="syntaxstring">"Dateityp: "</span><span class="syntaxkeyword">;<br />   </span><span class="syntaxdefault">print_r </span><span class="syntaxkeyword">(@</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'userfile'</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'type'</span><span class="syntaxkeyword">]);<br />   echo </span><span class="syntaxstring">"<br/>"</span><span class="syntaxkeyword">;<br /><br />   echo </span><span class="syntaxstring">"Dateiname: "</span><span class="syntaxkeyword">;<br />   </span><span class="syntaxdefault">print_r </span><span class="syntaxkeyword">(@</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'userfile'</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'tmp_name'</span><span class="syntaxkeyword">]);<br />   echo </span><span class="syntaxstring">"<br/>"</span><span class="syntaxkeyword">;<br />   echo </span><span class="syntaxstring">"Dateigr&ouml;&szlig;e: "</span><span class="syntaxkeyword">;<br />   </span><span class="syntaxdefault">print_r </span><span class="syntaxkeyword">(@</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'userfile'</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'size'</span><span class="syntaxkeyword">]);<br />   echo </span><span class="syntaxstring">"<br/>"</span><span class="syntaxkeyword">;<br />   echo </span><span class="syntaxstring">"Dateiname der &uuml;bertragenen Datei: "</span><span class="syntaxkeyword">;<br />   </span><span class="syntaxdefault">print_r </span><span class="syntaxkeyword">(@</span><span class="syntaxdefault">$_FILES</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'userfile'</span><span class="syntaxkeyword">][</span><span class="syntaxstring">'name'</span><span class="syntaxkeyword">]);<br />}<br />else<br />{<br />    </span><span class="syntaxdefault">$warning</span><span class="syntaxkeyword">[] = </span><span class="syntaxstring">"Es sind nur XML-Dateien erlaubt!"</span><span class="syntaxkeyword">;<br />}<br /><br /><br /><br /></span><span class="syntaxdefault">?></span>

    (Außerdem habe ich gerade gesehen, dass bei application/xml ich anscheinend " vergessen hatte, sorry^^)
    Was genau willst du eigentlich mit deinem print_r(@$_FILES) erreichen? O.o

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!