Session zur Datenübergabe

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

  • Session zur Datenübergabe

    Hallo, ich hänge hier an einem Verständnisfehler wohl fest.

    Situation ist wie folgt: über ein Eingabeformular werden Eingaben getätigt und bei Bestätigung gesendet, sind diese unvollständig, kommen entsprechende Meldungen, sind diese vollständig, werden diese auf der nächsten Seite alle nochmals zum überprüfen angezeigt, welche man sich dann auch ausdrucken kann. Von dort soll man nochmals bestätigen, damit dann per Formmailen erstmal die Daten an eine E-Mail-Adresse gesandt werden.

    Weil aber von Seite 2 zu 3 die Daten der Variabelen verloren gehen, habe ich jetzt auf Session zurückgreifen müssen.

    Ich starte also die Session auf der Anmeldeseite, definiere für die Eingabefelder die
    $_SESSION['Feldname']
    und lese diese anschließend auf der 3 Seite, also die zur Übermittlung mittels
    $var = $POST['Feldname']
    aus und gebe diese Variablen dann in den Text zur Mail weiter. Nur leider kommen die Inhalte da nicht rüber. Kannst sein, dass ich dort extra auf der Eingabeseite in den <form action="seite2.php..."> nachher ein ? anhängen soll und dort dann die einzelnen vars reinschreibe oder ähnlich?

    Für konstruktive und schnelle Hilfe bin ich immer dankbar.
    ------------
    man wächst mit seinen aufgaben

  • #2
    zeig mal auszüge aus deinem aktuellen code.

    Kommentar


    • #3
      Hast Du die Session_ID bis zur Seite 3 auch weitergegeben?
      Z.B.
      Seite 1
      ...
      session_start();
      $_SESSION['wert'] = "wert";
      <a href="seite2.php?sid=".session_id():">...
      ...

      Seite 2
      ...
      session_start();
      $wert = $_SESSION['wert'];
      ...

      Sollte so eigentlich laufen (wenn Cookies aktiviert sind!).

      Gruß
      Stephan
      [font=Verdana]SteGaSoft
      Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
      [/font]

      Kommentar


      • #4
        sgt, die url-variable heißt nicht immer "sid". standardweise ist es sogar "phpsessid" oder so ähnlich. einfach in session_name() reinschauen.

        Kommentar


        • #5
          Ja, du hast Recht!

          Wichtig ist, dass die aktuelle Session_ID (richtig) übergeben wird.

          Gruß
          Stephan
          [font=Verdana]SteGaSoft
          Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
          [/font]

          Kommentar


          • #6
            danke erstmal für eure antworten, ich hatte das projekt leider für eine kreative denkpause kurz auf eis legen müssen. werde eure vorschläge bei der weiterentwicklung verwenden.
            ------------
            man wächst mit seinen aufgaben

            Kommentar


            • #7
              sorry, entweder stelle ich mich zu dumm oder ich kapier das nicht. hier deswegen der quelltext der eingabeseite, wo die session gestarten wird, dann von der 2ten und schließlich der dritten.

              @sgt wieso muss der Link mit seite2.php?sid=".session_id." stehen. Wozu überhaupt dieser Link. Also ich habe anschließend nicht umsonst im <form> Teil den Link auf seite2.php gesetzt zur Datenübermittlung. Wenn das anders muss bitte sagen, habe auch in diversen PHP-Büchern gesucht, dafür aber keine richtige Erklärung gefunden, es existiert dort einfach.



              ----------seite1.php----
              <?php

              session_start();

              setcookie(session_name(), session_id(), time()+3600);

              $_SESSION['v1'] = $v_name;
              $_SESSION['v2'] = $n_name;
              $_SESSION['v3'] = $strasse;
              $_SESSION['v4'] = $plz;
              $_SESSION['v5'] = $ort;
              $_SESSION['telefon'] = $telefon;
              $_SESSION['email'] = $email;


              ?>

              .....
              <form action="seite2.php?sid=".session_id()."" method="post" name="anmeldung" id="anmeldung">
              ...formularfelder
              ----------ende seite1.php-----

              --------seite2.php------
              <?php

              session_start();
              $w1 = $_SESSION['$v_name'];
              $w2 = $_SESSION['$n_name'];
              $w3 = $_SESSION['$strasse'];
              $w4 = $_SESSION['$plz'];
              $w5 = $_SESSION['$ort'];
              $w6 = $_SESSION['$telefon'];
              $w7 = $_SESSION['$email'];


              //echo "<a href='pruefen.php?'.session_name().'='.session_id().'>";
              //echo "<ipnut type='hidden' name=''.session_name().'' value=''.scession_id().''>";
              ?>

              anschließend noch ein php-code in der seite, welcher die formulardaten auf einfache eingabefehler überprüft

              <?php
              if($_REQUEST['weiter'])
              if(empty($_REQUEST[v_name]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/vn.gif' border='0'></a></p>";
              }

              if(empty($_REQUEST[n_name]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/nn.gif' border='0'></a></p>";
              }


              if(empty($_REQUEST[strasse]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/str.gif' border='0'></a></p>";
              }

              if(empty($_REQUEST[plz]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/plz.gif' border='0'></a></p>";
              }

              if(empty($_REQUEST[ort]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/ort.gif' border='0'></a></p>";
              }

              if(empty($_REQUEST[telefon]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/telefon.gif' border='0'></a></p>";
              }

              if(empty($_REQUEST[email]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/email.gif' border='0'></a></p>";
              }

              if(empty($_REQUEST[ok]))
              {
              echo "<p align='left'><a href='javascript:history.back()'><img src='../../pics/anmeldung/fehlt/agb.gif' border='0'></a></p>";}
              else
              {

              echo"<form action='check.php' method='post'><input type='submit' value='Daten absenden' name='send'></form>";

              }
              ?>
              ----------ende seite2.php--------

              Der PHP-Code zur Überprüfung der Eingaben funktioniert korrekt, das läuft, sehe ich ja. Nur könnte der Fehler ja hier im form Teil ggf. liegen

              --------seite3.php----------

              <?php

              session_start();
              $w1 = $_SESSION['$v_name'];
              $w2 = $_SESSION['$n_name'];
              $w3 = $_SESSION['$strasse'];
              $w4 = $_SESSION['$plz'];
              $w5 = $_SESSION['$ort'];
              $w6 = $_SESSION['$telefon'];
              $w7 = $_SESSION['$email'];


              echo "<a href='pruefen.php?'.session_name().'='.session_id().'>";
              echo "<ipnut type='hidden' name=''.session_name().'' value=''.scession_id().''>";
              ?>

              .....

              letztendlich sollen dann die korrekten Daten per email jemandem zugesandt werden
              <?php
              $empfaenger = "ixx@dd.de";
              $betreff = "...";
              $text="
              Vorname: $v_name
              Nachname: $n_name
              Straße: $strasse
              PLZ / Ort: $plz $ort
              Telefon: $telefon
              Email: $email
              Nachricht: $message\n";

              mail($empfaenger, $betreff, $text, "From: $email");?>
              -------------ende seite3.php--------------

              So, wer mir helfen kann, bitte posten.
              ------------
              man wächst mit seinen aufgaben

              Kommentar


              • #8
                Wozu überhaupt dieser Link
                Dieser Link dient dazu dem folgenden Script mitzuteilen, welche Session zu verwenden ist. Du trägst ja Session Vars so ein:
                $_SESSION['name'] = 12345;

                Diese Var ist eindeutig einer Session ID zugeordnet. Es macht nun keinen Sinn wenn du diese Vars überträgst. Dann könntest du gleich auf Sessions verzichten und das ganze mittels $_GET Vars machen.

                Wenn du also auf irgendeiner folgenden Seite auf die Eingangs definierten Session Vars zugreifen willst, dann MUSST du die Session ID entweder im URL ($_GET Methode) oder mittels Keks (Cookie-Methode) übergeben. Dann kann das Folgescript anhand der Session ID die korrekte Session Var feststellen. Ansonsten hätte das Script ja keine Anhung welche $_SESSION['name'] zu verwenden ist (v.a. wenn du viele User Online hast wird diese Var ja nicht nur einmal bestehen, also muss sie einer Sesssion zugeordnet sein)

                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


                • #9
                  gut, also bedeutet dies, dass ich nach session_start() nur immer die Session-ID in der GET-Methode auslesen muss, um dann immer an die aktuell für den User geltenden Daten dranzukommen und diese abzusenden.
                  Bedeutet ich muss nur mittels der ID arbeiten? aber wieso habe ich dann in verschiedenen Tutorials wie z.B. bei QuakeNet gesehen, dass die POST-Methode auch funktioniert, wenn manuell die session_id() und der session_name() übergeben werden. verwirrt mich jetzt ein wenig.
                  ------------
                  man wächst mit seinen aufgaben

                  Kommentar


                  • #10
                    Sieh dir das Posting von penicillin an.
                    Dort hat er auf meinen Fehler hingewiesen.
                    Es muß nicht notwendigerweise der Parameter "sid=..." sein.
                    Er kann z.B. auch "phpsessid=..." heißen.
                    Wie die Variable der Session-ID bei deinem Server/Provider heißt mußt du ggf. mittels phpinfo() rausfinden (s. "session.name").

                    Gruß
                    Stephan
                    [font=Verdana]SteGaSoft
                    Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
                    [/font]

                    Kommentar


                    • #11
                      ja, habe geschaut, es ist phpsessid.
                      @jahlives: aber wieso soll ich jetzt die post-methode denn verwerfen???
                      ------------
                      man wächst mit seinen aufgaben

                      Kommentar


                      • #12
                        Du sollst nicht die POST Methode verwerfen. Du musst dich nur fragen, wo es Sinn macht diese zu benutzen. Du kannst in deinem Form ein hidden field machen und die PHPSESSID als Wert übergeben. Dann wird die Session auch mittels POST übermittelt und ist nicht im $_GET Array zu finden.
                        Ich persönlich bevorzuge die $_GET Methode weil ich dann einfach im Form im action URL die Session ID anhängen kann.

                        Wenn du aber kein Form hast, dann kommt imho nur die GET Methode zum Zuge oder eben der Keks.

                        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