Umgang mit Sessions

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

  • Umgang mit Sessions

    Hallo Leute,

    ich hatte mit sessions noch nicht viel am Hut, jetzt muß ich aber ran.

    Ich habe folgendes Problem:

    Ich arbeite gerade an einem Bestell-System. Bei springen zwischen den Katalogseiten, wird immer die Session aufrecht erhalten und der Timestamp aktualisiert. Wenn ich länger als eine Stunde nicht gemacht habe, werde ich wieder aus dem System geschmissen (Hinweisseite) und bekomme eine neue Session_id.
    Natürlich darf das beim erstmaligen Besuch der Seite nicht sein, ich müßte also abfragen, ob ich bereits innerhalb der Seite agiere.

    Dann habe ich noch das Problem, dass wenn ich nach dem Ablauf der Zeit die Session beenden will und eine neue erzeuge, aus irgendeinem Grund mein HTML-Code teilweise zerstört wird. Aber nur wenn ein session_destroy() gefolgt von einem session_name("mysid") auftritt.

    Hier mal mein Code, der mittels include() in jede Seite geholt wird. Die Zeit habe ich zum testen mal auf 10 sek. gestellt.

    session_name("mysid");
    session_register("timestamp");

    if((time() - $timestamp) > 10){
    print "Zeit abgelaufen";
    session_destroy();

    session_name("mysid");
    session_register("timestamp");

    }

    $timestamp = time();


    In meinen Büchern finde ich leider keine ausführlichen Hinweise, wie man "richtig" die Session Befehle vergibt. Vielleicht könnt Ihr mir ein paar Tips geben, was denn wirklich gebraucht wird. Wie ich gemerkt habe, kann ich mir z.B. session_start() sparen.
    Was muß denn z.B. in jeder Datei vorkommen und was nur auf der Startseite etc.

    Wie immer besten Dank,
    Andi

  • #2
    PHP-Code:
    session_name('mysid');
    session_start();
    if (!isset(
    $_SESSION['timestamp']))
      
    $_SESSION['timestamp']=time();
    if (
    time()-$_SESSION['timestamp']>10)
    {
      echo 
    'Du bist raus.';
      unset(
    $_SESSION['timestamp']);
      
    session_destroy();
      
    session_name('mysid');
      
    session_start();
    }
    $_SESSION['timestamp']=time(); 
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Danke


      Komischerweise werreist er immernoch den HTML-Code. Aber da ich dann sowieso auf eine andere Seite springe, lasse ich die Session einfach beendet. Bei link auf die Homepage wird ja dann sowiso eine neue Session gestartet.

      Grüße, Andi

      Kommentar


      • #4
        warum beendest du die session eigentlich?

        lass die doch aktiv bis der user sich ausloggt
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Nun es ist ja ein Bestell-System. Da man auch bestellen können soll ohne sich vorher anzumelden, verbinde ich die bestellten Artikel mit der Session_ID.
          Wenn der User die Seite nun aber evtl. Bookmarkt und die Bestellung nicht beendet, möchte ich somit verhinder, dass er bei einem Wiederbesuch über das Bookmark nach 2 Stunden nicht noch seine alten Artikel im Warenkorb hat. So gewähre ich im eine Stunde ohne Aktion zu verweilen, danach wird er gekickt.

          Hatte auch schon überlegt beim Besuch der Seite einen Timestamp als Variable mitzugeben. Aber die müßte dann manuell an jeden Link gesetzt werden, da ist das mit den Sessions glaube ich einfacher.

          Macht das Sinn? Gibts es bessere Alternativen?

          Dank & Gruß,
          Andi

          Kommentar


          • #6
            tabelle in datenbank mit spalte LastAction und die bei jedem klick auf Now() setzen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Das bedeutet ja bei jedem Klick eine DB-Abfrage und somit Verzögerung.
              Hmm, ich glaub ich versuche das jetzt erst mal mit meinen Sessions. Ich habe die DB schon entsprechend angelegt und die Programmierung steht auch schon halbwegs. Ich zieh das jetzt mal so durch, ganz verkehrt ist das ja nicht.

              Aber interessierer würde mich die andere Methode auch. Was wird denn da in die DB gesichert? Was bedeutet das Now() und wie identifiziere ich den Bnutzer wieder? Ist Now() immer der gleiche Wert?

              Grüße

              Kommentar


              • #8
                jeder klick = neue anforderung an server, da fällt ne datenbankabfrage nich wirklich ins gewicht (wenn doch: provider wechseln *g*)

                Now()
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Die Session wird nicht destroyt. Ich hatte es vorher mit deaktivierten Cockies getestet, da gings. Wenn er aber ein Cockie ablegt, wird die Session nicht mehr beendet. Ich komme zwar auf meine Timeout-Seite und vorher bekommt er auch den Befehl session_destroy(), aber wenn ich auf die Startseite zurück gehe habe ich in meinem Warenkorb immer noch alle Artikel.

                  Muß ich denn auch das Cockie löschen?


                  Grüße,
                  Andi

                  Kommentar


                  • #10
                    was steht in dem cookie drin?
                    was für ne lebensdauer hat der cookie?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Der Cookie wird irgendie automatisch gesetzt. Er enthällt nur die Session_ID. Ich lasse ihn jetzt beim Session_destroy mit löschen. Jetzt scheints zu funktionieren.

                      Aber normalerweise sollte die alte Session doch dann nicht mehr gültig sein und ich beim Besuch der Startseite wieder eine neue bekommen. Versteh ich nicht


                      Grüße, Andi

                      Kommentar


                      • #12
                        wenn du session_destroy machst wird der session-cookie zerstört, das markst du aber erst wenn du wieder neu was vom browser anforderst. du musst also mit header('location: blablabla'); ne weiterleitung machen
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          neeee is nicht! So schlau war ich auch schon. Ich kann sogar den Browser zu machen und erneut auf die Seite gehen, er erkennt immer noch meine alte Session.


                          Grüße, Andi

                          Kommentar


                          • #14
                            lebensdauer des cookie?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Standard - habe ich nichts eingestellt. Ich lasse es ja jetzt mit dem session_destroy gleichzeitig löschen. Ich dachte halt, dass dies automatisch geschieht, denn immerhin wird das cookie ja auch automatisch angelegt.

                              Grüße

                              Kommentar

                              Lädt...
                              X