Session über URL

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

  • Session über URL

    Über den Konstrukter meiner Session Klasse führe ich folgenden Code aus!
    PHP-Code:
        function UserSessionManagement() {
        
    ini_set("session.use_cookies",SESSION_USE_COOKIES);
        
    session_name(SESSION_NAME);
        
    session_start();

    in den Methoden greife ich dann mit session_id() zu um zu überprüfen ob die session existiert usw. Wenn SESSION_USE_COOKIES = 1 ist (also mit Cookies) funktioniert die Klasse einwandfrei. Wenn ich es allerdings auf 0 setze bekomm ich in den Unterseiten allerdings immer eine andere Session ID. Woran liegt das?

    MfG Markus

  • #2
    gibst du die session id bei den links mit?
    mfg

    Kommentar


    • #3
      Die Session ID wird doch automatisch angehängt. Auf allen Links auf der Seite direkt nach dem Login wird die Session ID angehängt (Bei Formuaren werden Hidden Fellder mit der Session ID eingefügt). Das Problem ist, das bei jedem aktuallisieren ich eine neue Session ID bekomm.

      Kommentar


      • #4
        Auf allen Links auf der Seite direkt nach dem Login wird die Session ID angehängt
        wird sie auch auf den folgeseiten angehängt?
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          scheinbar wird die session id nicht weitergereicht
          was steht denn in SESSION_NAME? wo wirds wie gesetzt?
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Hab mal den Code rausgezogen:
            PHP-Code:
            define('SESSION_NAME',"FIN");
            define('SESSION_COOKIE_NAME',"TEST");
            define('SESSION_COOKIE_PATH',"/");
            define('SESSION_COOKIE_DOMAIN',"localhost");
            define('SESSION_COOKIE_TIMEOUT',2592000);
            define('SESSION_USE_COOKIES',"0");

            include_once(
            "class_mysql.inc.php");

            class 
            UserSessionManagement
            {
                var 
            $db null;

                
            // Konstruktor der die Session startet

                
            function UserSessionManagement() {
                    
            ini_set("session.use_cookies",SESSION_USE_COOKIES);
                    
            session_name(SESSION_NAME);
                    
            session_start();
                }

                
            // Überprüft die Gültigkeit von Usernamen und Passwort und speichert die session in activeuser

                
            function login($username=null$password=null$md5=false) {
                    if(!isset(
            $username) || !isset($password)) {
                        print(
            "<b>ERROR:</b> Missing argument -- File: ".__FILE__." on line <b>".__LINE__."</b><br>\n");
                        return 
            false;
                    }
                    if(
            $this->db ==null)
                        return 
            false;
                    if(
            $md5 == false)
                        
            $password md5($password);
                    
            $sql "SELECT UserId FROM ".TABLE_PREFIX."user WHERE UserName = '".$username."' AND UserPass = '".$password."'";
                    if(
            $back $this->db->select($sql))
                        
            $id=$back[0]['UserId'];
                    else
                        return 
            false;
                    
            $session session_id();
                    
            $sql1 "SELECT UserId FROM ".TABLE_PREFIX."activeuser WHERE UserSession = '".$session."'"//Verhindert das zweimalige auftauchen der gleichen session_id in der activeuser Tabelle
                    
            $back $this->db->select($sql1);
                    if(
            sizeof($back) == 0) {
                        
            $sql2 "INSERT INTO ".TABLE_PREFIX."activeuser (UserId,UserSession,UserLogin)VALUES('".$id."','".$session."', '".time()."')";
                        return 
            $this->db->insert($sql2);
                    }
                    return 
            true;
                }

                function 
            is_registered() {
                    
            $session session_id();
                    echo 
            $sql "SELECT UserId FROM ".TABLE_PREFIX."activeuser WHERE UserSession = '".$session."'";
                    
            $back $this->db->select($sql);
                    if(
            sizeof($back) != 0)
                        return 
            true;
                }

                
            // Gibt die Benutzer ID sowie das Benutzer Objekt des gerade aktiven Users zurück.

                
            function get_active_user() {
                    if(
            $this->db ==null)
                        return 
            false;
                    
            $sql1 "SELECT UserId FROM ".TABLE_PREFIX."activeuser WHERE UserSession = '".session_id()."'";
                    if(!
            $back $this->db->select($sql1))
                        return 
            false;
                    
            $id $back[0]['UserId'];
                    
            $sql2 "SELECT UserId,UserObject FROM ".TABLE_PREFIX."user WHERE UserId = '".$id."'";
                    if(!
            $back $this->db->select($sql2))
                        return 
            false;
                    
            $id $back[0]['UserId'];
                    
            $user unserialize($back[0]['UserObject']);
                    return array(
            $id,$user);
                }

            //ANWENDUNG:

            //login.php
            ...
            if(isset(
            $_POST['submit'])) {
                
            $username $_POST['username'];
                
            $password $_POST['password'];
                if(
            $management->login($username,$password)){
                    if(
            $management->is_registered()) {
                        if(
            $_POST['checkbox'] == "on") {
                            
            $management->set_auto_login($username$password);
                        }
                        
            header("Location: test.php"); // Funktioniert
            ...

            //bearbeitung // Andere Session ID wird bei Logout angehängt.
            ...
            echo 
            "<a href=\"test.php?logout=1\">Logout</a><br>"// Session id wird angehängt. Sobald man aktuallisiert neue Session ID.
            if($management->is_registered()) {
                echo 
            "<a href=\"test.php?logout=1\">Logout</a><br>";
                list(
            $id,$user) = $management->get_active_user();
                echo 
            "UserID =".$id."<br>";
                echo 
            "Vorname =".$user->get_firstname()."<br>";
                echo 
            "Nachname =".$user->get_surname()."<br>";
            ... 
            MfG Markus
            Zuletzt geändert von markusschmitt; 21.07.2004, 19:30.

            Kommentar


            • #7
              Kurz ein Bild geschossen. Oben vor der eingabe, Unten nach der Eingabe mit veränderter Session ID.
              Im Quelltext vom oberen Bild wird die SessionId automatisch als Hidden Feld angefügt. Aktuallisier ich die 2te oder die erste Seite bekomm ich ander Session IDs


              MfG Markus

              Kommentar


              • #8
                Hat niemand eine Idee warum ich immer ne neue Session ID bekomm? Beachte ich was net?

                MfG Markus

                Kommentar


                • #9
                  also am constructor liegts nicht, aber da Du nur fragmente lieferst ...
                  as macht zB die Funktion set_auto_login()?
                  Zeichne mal in deiner Login rein wo dein debugging fehlschlägt Du hast ne menge ifs so check them.
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    achja und wenn du alle halbe std nachfragst ob keiner ne idee hat werden immer weniger leute deinen thread durchgehn, weils einfach nur nervt.
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      Hab mal die ganze Klasse sowie das login und test Skript hochgeladen.

                      http://www.mi-ernst.de/stuff/class_u...nt.inc.php.txt // phps wird leider nicht komplett angezeigt.
                      http://www.mi-ernst.de/stuff/login.phps
                      http://www.mi-ernst.de/stuff/test.phps

                      Achja, zu oberem Code. Ich habe alles was nicht relevant ist versucht rauszumachen. Es geht wirklich nur um die Weitergabe der Session in der URL von dem her hat das Autologin Skript nichts damit zu tun.
                      Mit:
                      define('SESSION_USE_COOKIES',"1"); funktioniert das Skript. Stell ich auf 0 um bekomm ich bei jeder aktuallisierung bzw. Weiterleitung eine neue SessionId.

                      MfG Markus
                      Zuletzt geändert von markusschmitt; 21.07.2004, 22:28.

                      Kommentar


                      • #12
                        und das is eben weil du die sid sehr wahrscheinlich nich weitergibst.
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          session_start(Übergebene ID);

                          ziemlich cool wa?
                          Wer immer nur tut was er kann lernt nie was neues.

                          Kommentar

                          Lädt...
                          X