PHP: ohne track_vars und register_globals dateien uploaden



  • Hallo, bei mir sind $track_vars und $register_globals false. jetzt hab ich weder
    das array $_FILES['bla'] noch $bla. kann ich sonst irgendwie auf die datei zugreifen?



  • Also ich kann mir nicht vorstellen, dass Du kein _FILESArrayhast,daeseinAutoglobalesArrayist.Esistauchansprechbar,wennregister_globalsoffist.\_FILES -Array hast, da es ein Autoglobales Array ist. Es ist auch ansprechbar, wenn register\_globals off ist. HTTP_POST_FILES steht nicht zur Verfügung, wenn register_globals off ist.

    Ich weiß jetzt ja nicht, was Du machen willst, aber schau einfach mal diesen Auszug aus dem PHP_Manual an:

    $_FILES['userfile']['name']
    //Der ursprüngliche Dateiname auf der Client Maschine. 
    
    $_FILES['userfile']['type']
    //Der Mime-Type der Datei, falls der Browser diese Information zur Verfügung 
    //gestellt hat. Ein Beispiel wäre "image/gif". 
    
    $_FILES['userfile']['size']
    //Die Größe der hochgeladenen Datei in Bytes. 
    
    $_FILES['userfile']['tmp_name']
    //Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server 
    //gespeichert wurde. 
    
    $_FILES['userfile']['error']
    

    MfGr,
    mid



  • Vielleicht hab ich ja was übersehen, aber so funzt es nicht:

    mitten in test.php:
    
        <form enctype="multipart/form-data" method="POST" action="test.php">
        <input type="file" name="datei" value="Laden..."><br>
        <input type="submit" value="Alles klar">
        </form>
        <?php
            echo "File-Size: " . $_FILES['datei']['size'] . "<br>";   /*blub, beim klick auf submit, also nach dem raufladen, sollte doch irgendetwas ausgebeben werden, nicht? */
          ?>
    


  • Hast du denn keine Möglichkeit track_vars auf on zu setzen? Das ist viel besser als register_globals und imho brauchst du eines von beiden 🙄



  • Klappt eventuell das hier:

    $foto = $_POST['datei'];
    echo "Filesize: " . $foto_size;
    

    Wenn register_globals on ist, dann hab ich nämlich schonmal gesehen, dass man mit _size anhängen die Größe ermitteln kann.

    MfGr,
    mid



  • Wenn track_vars auf off ist gibt es aber kein $_POST, $_GET, $_FILES, ... :p



  • Original erstellt von flenders:
    Wenn track_vars auf off ist gibt es aber kein $_POST, $_GET, $_FILES, ... :p

    Sorry, hab ich nicht aufgepasst. 😮

    Aber wer macht denn solche Configs????

    [ Dieser Beitrag wurde am 23.03.2003 um 20:59 Uhr von Midnighter editiert. ]



  • klar, $_POST, $_GET, $_FILES etc sind nicht vorhanden.
    und die globalen $filename $filename_size etc. gibt es auch nicht, weil ja register_globals weg ist.
    (seltsamer weise?) sind alle $_GET variablen auch als globale variablen regeristriert - also bei site.php?var=value hab ich eine globale $var mit dem wert "value"

    PS: solche configs werden anscheinend von anbietern von 50MB (erweiterbar) Speicher, PHP 4.0.6 + MySQL (Version weiß ich grad nicht) gemacht, die ihre dienstleistungen gratis anbieten, mit "nur" einem im hintergrund-popup

    [ Dieser Beitrag wurde am 23.03.2003 um 21:12 Uhr von Noesis editiert. ]



  • und du bist dir sicher dass register_globals auf off ist 😕 🙄



  • das ist ja das seltsame!
    und notfalls kann ich ja mit echo $register_globals das auch ausgeben lassen, nicht?
    aber $dateinameausdemformular geht nicht!

    irgendwie komm ich mir in letzter zeit ziemlich ver*****t vor, dauernd nur mehr unlösbare Probleme?!



  • Warte auf Henno! Der hilft dir schon!!! 🙂



  • Das mit echo $register_globals; funktioniert nur, wenn gu vorher $register_globals = ini_get('register_gobals'); geschrieben hast!

    Bei deinem Beispiel solltest du, sofern register_globals auf on ist, folgende Variablen haben:

    $datei // Der Name der Datei im temporären Verzeichnis
    $$datei_name // Der Name der Orginaldatei
    $datei_size // Die tatsächliche Größe der Datei
    $datei_type // Der Dateityp im MIME-Format
    

    Falls du PHP > 4.1.0 hast solltest du es aber mit $_FILES['datei'][...] machen! (Näheres dazu hier) 🙂



  • Hi!
    Darf man erfahrung, warum du denn alles deaktiviert hast ?

    Bye



  • Original erstellt von Noesis:
    PS: solche configs werden anscheinend von anbietern von 50MB (erweiterbar) Speicher, PHP 4.0.6 + MySQL (Version weiß ich grad nicht) gemacht, die ihre dienstleistungen gratis anbieten, mit "nur" einem im hintergrund-popup

    Er hat halt offenbar (kann ich mir zwar kaum vorstellen) einen Free-Hoster, der das so eingestellt hat 😉 😞



  • hm, das ist ungünstig 😃



  • Schonmal mit den alten HTTP_POST_VARS/HTTP_GET_VARS und HTTP_SERVER_VARS versucht?



  • mit HTTP_POST_FILES
    irgendwo hab ich was über HTTP_RAW_POST_DATA gelesen? was ist das?
    und ein zitat:

    It should be noted that there is a control for file uploads in PHP.INI which must be on for any of this to work. In fact, my experience is that if file uplods are turned off in php.ini, NONE of the fields in a multipart/form-data form will be passed to PHP. This will be truw whether or not a file is being uploaded.

    [edit]Zitate bitte nicht in Code Tags, sondern Quote Tags packen!

    [ Dieser Beitrag wurde am 24.03.2003 um 18:01 Uhr von Loggy editiert. ]



  • Gehen denn die HTTP_POST_VARS bzw. HTTP_GET_VARS?



  • Ich kann das im Moment nicht überprüfen. Wieso fragst du?
    (btw sorry - hab anscheinend code und quote verwechselt 🙄 )

    [ Dieser Beitrag wurde am 24.03.2003 um 19:30 Uhr von Noesis editiert. ]



  • HI,

    mag jetzt blöd klingen, aber was für ne Ausgabe wirft Dir denn

    phpinfo();

    hin???
    Ist register_globals nu off oder nicht?

    MfGr,
    mid



  • ist eine schöne ausgabe:

    Fatal error: Call to undefined function: phpinfo() in bla on line x

    Achja, register global scheint doch an zu sein 🙄 hab nicht gewusst, dass man es mit ini_get holen muss 🙄 🙂

    ok, nochmal der quelltext der seite

    <html>
    <head></head>
    <body>
    <?php
        $register_globals = ini_get('register_globals');
    
        echo "Reg-Glob.: $register_globals<br>"; //blubb: Ausgabe: 1
        echo "Output 1: " . $HTTP_POST_FILES['userfile']['name'] . "<br>"; //ausgabe:
        echo "Output 2: " . $_FILES['userfile']['name'] . "<br>"; //ausgabe:
        echo "Output 3: " . $userfile . "<br>"; //ausgabe:
        echo phpinfo(); //ausgabe s.o.
    ?>
    </body>
    </html>
    

    ich bin definitiv zu doof 🙄


Anmelden zum Antworten