Session weg nach redirect

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

  • Session weg nach redirect

    Hallo

    ich habe folgendes Problem.
    Ich habe für den Login eine PHP Seite, die per Submit die Daten per POST an einen Servlet.php schickt, die nur die DB ABfrage macht, und dann bei richtigem Login in das eigentliche "Programm" weiterleitet.
    Nun hab ich das Problem, dass die Session von der Login.php in die Servlet.php (keine html Ausgabe, nur DB Zugriffe) bestehen bleibt, aber durch den redirect im Servlet.php dann auf der nächstenSeite verloren geht und dementsprechend eine neue Session aufgebaut wird.

    ich redirecte so:
    if(bla)
    {
    header("Location: programm.php");
    }

    dabei geht mir die Session verloren... ich habe dann auf der Programm.php eine neue SessionID.

    Es ist dabei zu sagen, dass ich eine Sessionklasse verwende, die eine SessionID erzeugt und registriert...falls noch keine besteht.

    Wie muss man redirecten, damti die Session nicht verloren geht?

    Gruss
    Stefan

  • #2
    wie sehen die restlichen links aus?
    steht die session-id da als parameter hintendran?

    wenn ja, solltest du das in oben stehendem nachtragen...
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      PHP-Code:
      header('index.php?'.session_name().'='.session_id()); 
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        Original geschrieben von TBT
        PHP-Code:
        header('index.php?'.session_name().'='.session_id()); 
        erstmal ist die syntax für's weiterleiten immer noch "Location: ..." ;-),

        und zweitens erfordert HTTP hier die angabe eines absoluten URLs.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          session weg nach redirect

          das problem ist, dass ich diese selbst geschriebene Sessionklasse verwende, um eine get und set methode zu simulieren...
          wie sie bei jsp´s bestehen

          da funktioniert das mit dem anhängen der SID nicht mehr!
          das ist das Problem

          Kommentar


          • #6
            aber du hast bestimmt etwas code für uns oder?

            "diese" klasse kenn ich nämlich nicht
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              klar sorry!

              <?php

              class Session
              {
              function Session() {
              global $_sessionId, $_sessionAttributes;

              session_start();
              if(isset($_SESSION["_sessionId"])) {
              echo "<p> Die Session ist bereits angelegt <p>";
              $_sessionId = $_SESSION["_sessionId"];
              $_sessionAttributes = $_SESSION["_sessionAttributes"];
              }
              else {
              // Erzeugen der Session-ID
              $tmp = explode(" ", microtime());
              $_sessionId = md5($u_name.$tmp[0]);
              //echo "<p> Die Session mit der SessionID ".$_sessionId." wurde erzeugt<p>";
              // Session-ID und die Daten des eingeloggten Users in der Session registrieren.
              session_register("_sessionId");
              session_register("_sessionAttributes");
              }
              }

              function getAttribute($name) {
              global $_sessionAttributes;
              return $_sessionAttributes[$name];
              echo "Lese " . $_sessionAttributes[$name] . " ...";
              }

              function getId() {
              global $_sessionId;
              return $_sessionId;
              }

              function removeAttribute($name) {
              global $_sessionAttributes;
              unset($_sessionAttributes[$name]);
              }

              function setAttribute($name, $attribute) {
              global $_sessionAttributes;
              $_sessionAttributes[$name] = $attribute;
              echo "Setze " . $_sessionAttributes[$name] . " ...";
              }
              }

              // Anlegen des globalen Session-Objekts (wie JSP)
              $session = &new Session();
              ?>

              Kommentar


              • #8
                ich versteh zwar nicht, warum du die klasse brauchst und nicht eifnach auf $_SESSION zugreifst, aber mir soll's recht sein

                probier trotzdem mal TBTs vorschlag aus, die session die du mit session_start() startest hat nämlich auch ne session_id, die du mit session_id() erfährst

                das zeug, das du _in_ der session speicherst hilft php nämlich nicht wirklich beim verwalten der sessions an sich
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  das Problem ist, dass nun die SessionID, die php generiert, ja mit meiner generierten nicht übereinstimmt.
                  Die Klasse ist von nem Kumpel... und somit hab ich die übernommen, um mit get und set parameter hinzu zu fuegen und heraus zu holen...

                  Kommentar


                  • #10
                    Original geschrieben von ice77
                    das Problem ist, dass nun die SessionID, die php generiert, ja mit meiner generierten nicht übereinstimmt.
                    und warum hängst du dann nicht die "richtige" session-id an den URL an?

                    so wie's ausschaut, ist die funktion getId() doch dazu da, um eben diese zu liefern, oder ...?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      hmm,

                      PHP-Code:
                       function getId() {
                      global 
                      $_sessionId;
                      return 
                      $_sessionId;
                      }

                      $sid $obj->getId(); 
                      geht das?
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        entwarnung...

                        hab die Session Klasse überarbeitet... jetzt steht der Test aus :-)

                        Kommentar

                        Lädt...
                        X