Session übergibt nicht Formularvariablen an das Popup

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

  • Session übergibt nicht Formularvariablen an das Popup

    Wie schon der Titel sagt, habe ich eine Datei a, welche ein Formular enthält. Drücke ich auf Submit sollen die Variabeln an eine Datei b, die im Popup geöffnet wird (Javascript, window.open),über eine Session übergeben werden. Es funzt halt net!
    Hier der Code
    Datei a:
    PHP-Code:
    <?PHP
    session_start
    ();
    session_register("ort");
    ?>
    <html>
    <head>
    <title>PopUp - Test</title>
    <script type="text/javascript">
    function popup()

    F=window.open("popup.php?<?=SID?>","neu","width=500,height=300");
     } 
    </script>
    </head>
    <body>
    <a href="javascript:popup()">Fenster anzeigen</a>
    <form action='javascript:popup()'  method="get">
    <input type="text" name="ort" SIZE="39">
    <INPUT type='submit' value='Abschicken' >
    </form>
    </body>
    </html>
    Datei b:
    PHP-Code:
    <?PHP
    session_start
    ();
    ?>
    <html>
    <head>
    <title>Hallo</title>
    </head>
    <body>
    <?PHP
    echo $_SESSION["ort"];
    ?>
    </body>
    </html>
    Habe keine Ahnung woran es liegen könnte

    EDIT:
    smilies abgeschaltet, damit man den code lesen kann.
    abraxax


  • #2
    mach mal dies aus deiner datei a

    PHP-Code:
    <?PHP
    session_start
    ();
    session_register("ort");
    ?>
    <html>
    <head>
    <title>PopUp - Test</title>
    <script type="text/javascript">
    <!--
    function popup() { 
      F = window.open('','neu','width=500,height=300');

    // -->
    </script>
    </head>
    <body>
    <a href="java script:popup()">Fenster anzeigen</a>
    <form action="popup.php?<?php echo $SID?>" method="get" target="neu">
    <input type="text" name="ort" SIZE="39">
    <INPUT type='submit' value='Abschicken' >
    </form>
    </body>
    </html>
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Bei dieser Lösung übergibt zwar das Script, die Variablen in der URL, diese werden jedoch nicht ausgewertet!
      Erst nach einem Reload der Seite b interpretiert er die Variablen!

      Need Help

      Kommentar


      • #4
        wenn du sie mit dem ersten aufruf erst in der session speicherst, geht es nicht...
        kannst ja einen header() vorne rein schreiben. mit parameter first=1.
        wenn der para da ist, werden die daten gespeichert und die seite neu geladen.

        alá
        PHP-Code:
        session_start();
        if (
        $_GET["first"]==1) {
          
        session_register("ort"); 
          
        header("Location: ".$_SERVER["PHP_SELF"]);
        }
        // hier gehts normal weiter. 
        in datei A machst du noch ein hidden-field in das formular.

        Code:
        <input type="hidden" name="first" value="1">
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Ich habs mal so eingetragen und was kommt ein parse error in zeile 6 also in:
          PHP-Code:
          header("Location: ".$_SERVER["PHP_SELF"]); 

          Kommentar


          • #6
            @Abraxas: Du darfst der Form-Action keine Get-Parameter anhängen!
            Wenn schon, dann als <input type="hidden" ...>

            und das Popup kann man auch automatisch öffnen:

            <form action="popup.php" method="egal" target="neu" onSubmit="popup();">
            <input type="hidden" name="<?=session_name()?>" value="<?=session_id()?>">

            Aaaber ... Faramir hat da einen kleinen Denkfehler drin ...

            Momentan:
            Formular ans Popup schicken - logischerweise ist die Variable nicht in der
            Session, sondern in den Get-Parametern des Popups. Erst beim Reload
            des aufrufenden Fensters landet der Wert per session_register() in der
            Session. (aber nur, weil register_globals eingeschaltet ist!)

            So rum läuft das korrekt:
            1. Formular abschicken, Ziel ist das gleiche Skript
            2. Formular-Eingabe in Session speichern
            3. Popup aufrufen

            und dem Code hier ist register_globals piepegal ...
            foo.php:
            PHP-Code:
            <?php
              session_start
            ();
              if (
            $ort $_GET['ort']) // ist ort in den Get-Parametern?
                
            $_SESSION['ort'] = $ort// impliziert session_register
            ?>
            <html><head>
              <title>PopUp - Test</title>
            </head>
            <script type="text/javascript"><!--
            function popup() { 
              F = window.open('bar.php','neu','width=500,height=300');
            }
            //--></script><body<?php
             
            if ($_GET['ort']) echo ' onLoad="popup();"';
            ?>>
              <a href="java script:popup();">Fenster anzeigen</a>
              <form action="foo.php" method="get">
                <input type="text" name="ort" SIZE="39">
                <INPUT type='submit' value='Abschicken' >
              </form>
            </body></html>
            Übrigens tut´s das nicht, wenn das Eingabefeld leer abgeschickt wird.
            Soll auch in dem Fall ein Popup kommen:

            if (isset($_GET['ort'])) $_SESSION['ort'] = $_GET['ort'];
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Ich werd nicht mehr!
              Fehler in der dritten Zeile von Titus Code.

              Wenn ich dann stattdessen
              PHP-Code:
              if (isset($_GET['ort'])) 
                  
              $_SESSION['ort'] = $_GET['ort']; 
              in die 3 Zeile einsetze gibt er mir einen Fehler in Zeile 21 aus.
              PHP-Code:
              if_($_GET['ort'])
              Zuletzt geändert von Faramir; 04.03.2003, 12:43.

              Kommentar


              • #8
                Original geschrieben von Titus
                @Abraxas: Du darfst der Form-Action keine Get-Parameter anhängen!
                Wenn schon, dann als <input type="hidden" ...>
                ups. das hatte ich in dem moment wohl vernachlässigt...
                eigentlich mache ich das auch immer mit hidden-fields.

                in die 3 Zeile einsetze gibt er mir einen Fehler in Zeile 21 aus.
                was denn für einen fehler?
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Voila:
                  Parse error: parse error in /www/htdocs/celto/esob/test/test2.php on line 21
                  Ziemlich nichtssagend!

                  Kommentar


                  • #10
                    gib ma die zeilen 17 - 25
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Hier:
                      PHP-Code:
                      </head>
                      <body
                      <?php

                      if_
                      ($_GET['ort'])_
                      {
                          
                      echo_'onLoad="popup();"';
                      }
                      ?>>

                      Kommentar


                      • #12
                        zeile 21 is das mit if oder?
                        hast du die unterstriche da wirklich drinstehen?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Nein, die Unterstriche werden hier von Board irgendwie reingehauen. Ansonsten ja Zeile 21 ist die IF Zeile. Hat den sowas niemand mal zu Hause rumliegen und kann es hier hin posten?

                          Kommentar


                          • #14
                            sicher, dass der das erste ; mag?

                            Kommentar


                            • #15
                              steht bei deiner fehlermeldungnoch mehr als das was du gepostet hast?

                              hast du vor dem </head> auch php? wenn ja, poste mal alles bis zeile 25
                              EDIT:
                              PHP-Code:
                              echo 'Test'
                              bei mir gibt's keine unterstriche statt leerzeichen

                              Zuletzt geändert von mrhappiness; 06.03.2003, 16:26.
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X