Ankündigung

Einklappen
Keine Ankündigung bisher.

Session Daten gehen verloren

Einklappen

Neue Werbung 2019

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

  • Session Daten gehen verloren

    Hallo bin grad dabei eine Homepage mit Sessions zu realisieren. Um den namen des eingeloggten users an die nächste seite zu übergeben wird diese in der Variable $_SESSION['user'] gespeichert. am anfang der nächsten seite wird überprüft ob die variable gesetzt ist und wenn nicht wird sie automatisch auf "guest" gesetzt.

    So weit so gut. Nun mein Problem liegt darin dass manchmal bei der Überprüfung if(isset($_SESSION['user'])) herauskommt dass die Variable nicht gesetzt ist und daher wird der user zurück auf guest gesetzt. es sieht also so aus als wenn session daten verloren gehen würde.

    Hat jemand eine Idee was da schief läuft??

    LG

  • #2
    nö. Mehr Details wären noch hilfreich. Am besten mit dem Beispiel wo du die Session setzt und wo du sie überprüfst.

    Kommentar


    • #3
      also die session wird mal so gestartet:

      Code:
      <?session_set_cookie_params(0);
      session_start();
      ob_end_clean();
      ob_start ();
      
        if (!isset($_SESSION['user']))
          {
          $_SESSION['user'] = 'guest';
          $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
          }
      
      ..........
      dieser bereich schaut auf jeder seite gleich aus, oder besser gesagt komm ich eigentlich immer auf die selbe seite nur der inhalt ändert sich je nach einer get-variable (das sollte hier aber nichts zur sache tun)

      und hier noch der code des logins:
      Code:
      ..........................
                session_unset();
                session_destroy();
                session_start();
                $_SESSION['user'] = $user_id;
                $_SESSION['IP'] = $_SERVER['REMOTE_ADDR'];
                header('Location: index.php');
      ..........................
      also der tipp mit der ausgelaufenen session kann es wohl nicht sein da ich erstens die session-lifetime überschreibe (ganz am anfang) und zweitens das problem nicht nach einer bestimmten zeit auftritt und leider auch nicht an einer bestimmten stelle meiner page.

      LG

      Kommentar


      • #4
        Zitat von rabatz
        das problem nicht nach einer bestimmten zeit auftritt und leider auch nicht an einer bestimmten stelle meiner page.
        Und wie sollen wir dir dann helfen?
        Bei verloren gegangen Sessions "einfach so" können wir per Ferndiagnose so gut wie garnicht helfen.

        Ob es grundsätzlich mit dein Einstellungen Probleme gibt, kannst du testen, in dem du die Session in xy.php erstellst, mit Werten füllst und in abc.php wieder ausliest.
        Natürlich solltest du nach jedem neuen Testlauf die Session-Variablennamen ändern oder sicher gehen, dass die Session gelöscht wurde (sonst erhältst du die Ergebnisse der vorhergehenden Tests).

        Dann abc.php mal per Link und mal per Direktaufruf öffnen. Gibt es Unterschiede? Klappt alles?

        Wenn ja, scheint dein Code für das Verloren-gehen verantwortlich zu sein, wenn nein wohl eher die Einstellungen.
        Aber bitte überflute uns nicht mehr mit Informationen, irgendwann ist auch mal genug.

        Kommentar


        • #5
          Wieso speicherst du die IP in einer Session?

          Kommentar


          • #6
            damit ich feststellen kann ob jemand die session geklaut hat. zum beispiel wenn sich jemand deine cookies klaut und auf die seite zugreifen will wird er ausgeloggt weil er ja eine andere IP hat

            Kommentar


            • #7
              Zitat von rabatz
              damit ich feststellen kann ob jemand die session geklaut hat. zum beispiel wenn sich jemand deine cookies klaut und auf die seite zugreifen will wird er ausgeloggt weil er ja eine andere IP hat
              lies mal dies hier: http://www.php-faq.de/q/q-sessions-ip.html

              Kommentar


              • #8
                einmal danke für deine antwort. ich werd das mal probieren diesen teil mit der IP zu löschen. ich werd euch dann berichten.

                LG

                Kommentar


                • #9
                  Hallo

                  ich hab mir jetzt mal ein test-script einfallen lassen:


                  Code:
                  <?
                    //sessiontest.php
                    session_name("meine_session");
                    session_start();
                    session_unset();
                    session_destroy();
                    session_name("meine_session");
                    session_start();
                    
                    $_SESSION['user']="asdf";
                    $_SESSION['IP']=$_SERVER['REMOTE_ADDR'];
                    $_SESSION['zaehler'] = (int) 0;
                  
                    echo '<html><body>USER: '.$_SESSION['user'].'
                  IP: '.$_SESSION['IP'].'
                  
                  weiter</body></html>';
                    
                  
                  ?>
                  Code:
                  <?
                  //control.php
                  session_name("meine_session");
                  session_start();
                  
                  if ($_SESSION['user'] == "asdf")
                    {
                    if ($_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
                      {
                      echo '<html><body>Zaehler: '.++$_SESSION['zaehler'].'
                  weiter</body></html>';
                      }
                    else
                      {
                      echo '<html><body><font size="+3"><span style="color:#FF0000;">IP FALSCH</span></font></body></html>';
                      }
                    }
                  else
                    {
                    echo '<html><body><font size="+3"><span style="color:#FF0000;">USER FALSCH: '.$_SESSION['user'].'</span></font></body></html>';
                    }
                  ?>
                  wenn man das skipt ausführt kommt manchmal nach schon 3 versuchen (3 mal weiter drücken auf der 2. seite (conrotl.php)) ein Fehler und dann klappt es wieder einige hundert male. also ich versteh das ganze nicht wirklich. hat jemand eine Idee?

                  LG

                  Kommentar


                  • #10
                    Du solltest Deinen Links die Session-ID mitgeben.

                    PHP-Code:
                    .....[url="control.php?"]weiter[/url]..... 
                    EDIT:

                    Aus dem Post+Link von nikosch77 scheinst Du allerdings wenig gehalten zu haben. Die IP darfst Du als Schlüssel nicht nehmen. Kurzes Beispiel sind Anbieter wie AOL, die oft die IP-Adressen des Benutzers ändern. (proxy load-balancing, etc.). Lies einfach nochmal den Link von nikosch und die Userkommentare durch.

                    Kommentar


                    • #11
                      den link hab ich zwar gelesen aber das ist nicht das problem da der fehler beim user auftritt und nicht bei der IP. der hinweis mit der SID ist meiner meinung nach hinnfällig da die session per cookie übergeben wird. Wenn ich die IP nicht prüfe und die SID dann noch per URL übergebe ist die sicherheit ganz dahin da dann jeder der die URL in die hände bekommt, solange die session noch lebt auf deine daten zugreifen kann.

                      LG

                      Kommentar


                      • #12
                        nicht das problem da der fehler beim user auftritt und nicht bei der IP
                        Klar, bei Dir zu Hause auf dem localhost vielleicht...

                        per URL übergebe ist die sicherheit ganz dahin da dann jeder der die URL in die hände bekommt,
                        Und Cookies kann man nicht auslesen?

                        Die Session ID als "Geheimnummer" zu betrachten find ich schlecht. Lieber einen Sicherheitscode in der Session mitgeben. Aber das wurde (weiß nicht, ob es dieser Thread war) ja schon angesprochen.

                        Probier doch einfach mal, an den Link die ID anzuhängen, wenigstens als Test, ob der Fehler dann noch existiert. Und sei doch nicht so lernresistent.

                        Kommentar


                        • #13
                          also jetzt mach ich mal den lerninteressierten:

                          Wie soll das gehen das mit dem sicherheitscode??

                          LG

                          P.S.: ich habe mein testscript nicht lokal laufen sondern online unter http://mrwerner.mr.funpic.de/sessiontest.php

                          Kommentar


                          • #14
                            also jetzt mach ich mal den lerninteressierten:
                            Mach mal.

                            Wie soll das gehen das mit dem sicherheitscode??
                            Es gibt so einiges, um eine Session sicherer zu machen. Such mal bei Google nach "session hijack php" oder derivaten davon.

                            Viel Erfolg.

                            Kommentar


                            • #15
                              Zitat von pepe24
                              Du solltest Deinen Links die Session-ID mitgeben.

                              PHP-Code:
                              .....[url="control.php?"]weiter[/url]..... 
                              soda ich hab jetzt den link durch deinen Code ersetzt. jetzt wird die SID per URL übergeben leider keine änderung. kannst dich ja selber vergewissern.

                              LG

                              Kommentar

                              Lädt...
                              X