Viktor: Get Variablen verloren bei typ="file"

Guten Tag ich haben ein Problem.
ich benutze zum erstenmal den type="file" um bilder hoch zu laden das Problem dabei ist das wenn ich das formular abschicke meine Get Variablen die ich zu Navikation der Seite brauche verloren gehen.
Normale url: index.php?action=cverwaltung&typ=1
Die Get Variablen action und typ gehen hier verloren es kommt dann so etwas raus:ndex.php?datei=C%3A%5CDokumente+und+Einstellungen%5CViktor%5CDesktop%5Cda.txt

Hier der Quelltext:
<form  enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" name="upload">

<input onChange="submitsel('upload')" name="datei" class="upload" type="file">

</form>

Die Funktion submitsel benutze ich damit es keinen extra btn absckicken geben muss, hab es auch schon normal mit btn versucht geleiches Problem.

Hoffe ihr koennt mir da helfen.

mfg.
Viktor

  1. Wenn du sie auch nicht zumindest als hidden-field in deinem Formular unterbringst, wunder das auch nicht.

    Du benötigst etwas in der Art von:

    <input type="hidden" name="action" value="$_GET['action']" />

  2. ich benutze zum erstenmal den type="file" um bilder hoch zu laden das Problem dabei ist das wenn ich das formular abschicke meine Get Variablen die ich zu Navikation der Seite brauche verloren gehen.

    Ja, wenn du sie nicht weiterreichst, gehen sie verloren.

    Normale url: index.php?action=cverwaltung&typ=1
    <form  enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" name="upload">

    $PHP_SELF (bzw. besser $_SERVER['PHP_SELF']) enthält nur den Namen des Scriptes, die GET-Parameter im Querystring findest du in $_SERVER['QUERY_STRING']. Wenn du beide im action-Attribut kombinierst, bleiben die GET-Parameter auch erhalten:

    action="<?php echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; ?>"

    Sollte so funktionieren.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. Hallo Siechfred.

      $PHP_SELF (bzw. besser $_SERVER['PHP_SELF']) enthält nur den Namen des Scriptes, die GET-Parameter im Querystring findest du in $_SERVER['QUERY_STRING']. Wenn du beide im action-Attribut kombinierst, bleiben die GET-Parameter auch erhalten:

      action="<?php echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; ?>"

      Oder gleich $_SERVER["REQUEST_URI"] verwenden.

      Einen schönen Donnerstag noch.

      Gruß, Mathias

      --
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
      debian/rules
      1. action="<?php echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; ?>"
        Oder gleich $_SERVER["REQUEST_URI"] verwenden.

        Ja, in der Tat, warum nicht :)
        Zumal man bei meiner Variante wohl noch ein Fragezeichen zwischen PHP_SELF und QUERY_STRING setzen müsste.

        Siechfred

        --
        Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
      2. hi,

        action="<?php echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; ?>"

        Oder gleich $_SERVER["REQUEST_URI"] verwenden.

        Und _bitte_ in beiden Fällen htmlspecialchars() darauf anwenden - sofern man keine Lust hat, sich eine hübsche XSS-Lücke einzubauen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Guten Tag und danke fuer euren schnellen Antworten.
    Leider geht echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; und echo $_SERVER["REQUEST_URI"]; nicht ka warum ich werde nun Rafaels Lösung versuchen.
    mgf. Viktor

    1. Hallo Viktor.

      Guten Tag und danke fuer euren schnellen Antworten.
      Leider geht echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; und echo $_SERVER["REQUEST_URI"]; nicht ka warum

      Und was bedeutet "geht nicht" in für Außenstehende verständlicher Form? Erhältst du Fehlermeldungen? Wenn nein, unterdrückst du sie ggf.?

      Einen schönen Donnerstag noch.

      Gruß, Mathias

      --
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
      debian/rules
      1. hi
        nein keine fehler meldungen nur die get variablen sidn nicht mehr in der url.
        mfg. viktor

    2. Hi!

      Leider geht echo $_SERVER['PHP_SELF'] . $_SERVER['QUERY-STRING']; und echo $_SERVER["REQUEST_URI"];

      Welchen Wert hat die Einstellung register_globals in der php.ini?

      Schöner Gruß,
      rob

      1. register_globals ist auf off was heist das fuer mich
        mfg. viktor

        1. Hi!

          register_globals ist auf off was heist das fuer mich

          Das heißt für dich, daß es z.B. gar keine Variable $PHP_SELF gibt, sondern $_SERVER['PHP_SELF'].
          Und entsprechend mußt du auch auf $_FILES, $_GET, $_POST zugreifen.

          Schöner Gruß,
          rob

  4. echo $begrüßung;

    ich benutze zum erstenmal den type="file" um bilder hoch zu laden das Problem dabei ist das wenn ich das formular abschicke meine Get Variablen die ich zu Navikation der Seite brauche verloren gehen.
    <form  enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" name="upload">

    Du hast kein method-Attribut angegeben, weshalb der Standardwert GET verwendet wird. Es ist aber im Allgemeinen keine gute Idee, Dateien per GET, also über die URL zu übertragen. Eine URL hat je nach Browser nur eine begrenzte Länge. POST-Daten unterliegen keinen mir bekannten Beschränkungen seitens des Browsers. Auch wenn du das Formular per POST absendest, kannst du das im action-Attribut angegebene Ziel mit deinen Navigationsparametern versehen, und im Script via $_GET-Array abfragen. Die Formulardaten sind dabei wie üblich in $_POST zu finden.

    echo "$verabschiedung $name";

  5. Hi!

    Mich wundert es eigentlich, daß hierzu noch Niemand was gesagt hat:

    <input onChange="submitsel('upload')" name="datei" class="upload" type="file">

    Die Funktion submitsel benutze ich damit es keinen extra btn absckicken geben muss

    Du möchtest also einen Submit-Button sparen und deswegen nimmst du es in Kauf, daß User ohne JavaScript dein Formular nicht benutzen können?
    Du könntest wenigstens den Submit-Button in einem Noscript-Bereich anzeigen lassen.

    Und davon abgesehen finde ich die Sache recht unpraktisch, wenn man keinen Submit-Button hat.
    Was ist denn, wenn man versehentlich eine falsche Datei auswählt?
    Dein Formular wird per onchange abgeschickt. Es gibt keine Möglichkeit zur Korrektur.

    Schöner Gruß,
    rob

    1. es handelt sich um einen funktion fuer den admin und da ich der admin bin und ich js an habe ist mir das egal xD.
      mfg.
      viktor