session_destroy geht nicht

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

  • session_destroy geht nicht

    hallo,
    hab ein problem damit die sessions zu zerstören!

    und zwar kommt immer die fehlermeldung:

    Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in ...

    was ist da falsch?

  • #2
    haste auch session_start verwendet?

    Kommentar


    • #3
      ja

      meine seite zum zerstören sieht wie folgt aus

      <?php
      session_start();

      session_destroy();

      header("LOCATION: danke.php");
      ?>

      Kommentar


      • #4
        PHP-Code:
        <?
        session_start(); 
        session_destroy();
        ?>
        Sollte vollkommen ausreichen. weiß er denn, welche Session er löschen soll. Sprich hat er die sessionid?

        prüf mal vor dem destroy, ob die session da ist.

        Kommentar


        • #5
          hab am anfang

          session_start();
          $besucher = session_id();

          geschrieben. muss ich die session noch registern?
          also
          session_register($besucher);

          und dann erst mit session_destroy($besucher) löschen?

          Kommentar


          • #6
            Lies dir mal das entsprechende Tutorial auf dieser Seite durch. Zwar teilweise nicht die aktuellste Schreibweise, aber um die Thematik zu verstehen, sollte es in ordnung gehen.

            Kommentar


            • #7
              Hallo zusammen,
              ja diesesmal habe ich die suche benutzt und auch gleich ein topic gefunden. leider keine direkte antwort.

              Selbes Problem ich benutzte eine Session zum Login einer Website

              Wenn sich der User eingelogt hat kommt er in diese Verzweigung !
              PHP-Code:
              session_start();
              $besucher session_id();
              $nombre session_name();
              $session_user $user ;
              $session_passwort $passwort ;
              session_register("session_user");
              session_register("session_passwort");
              echo 
              "Starte Session $besucher"
              und meine Testausgabe sagt mir :

              Starte Session 524b1d27ed5cf3997225d1c404e761d6

              nun kann ich mich in der seite bewegen und allerlei tolle sachen machen.
              auf einer weiteren unterseite habe ich eine Testausgabe des Session namens und der Id eingebaut die allerding leer ist ???? keine ahnung warum.

              nun mein eigentliches Problem ist dann der logout button. klickt der benutzter nun auf den logoutbutton kommt er in diese verzweigung:


              PHP-Code:
              session_destroy($besucher);
              echo 
              "Erfolgreich ausgelogt."
              und hier kommt auch schon folgende ausgabe

              Trying to destroy uninitialized session in ....
              Erfolgreich ausgelogt.

              So weit ich das aus den anderen einträgen entnehme liegt es nicht daran das sie Session nicht da ist ! in meinem Temp Verzeichniss auf dem server wird eine Session erstellt. Nur wie kann ich diese killen ??
              danke schon mal

              greetz

              reaV
              Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
              www.d-creationz.de

              Kommentar


              • #8
                Versuche es nur mal mit session_destroy().

                Zu deinem oberen Problem:
                Ich will jetzt nichts Falsches sagen, da ich selbst noch nicht so viel Erfahrung mit Sessions habe, aber ich glaube es muß continuierlich in jeder aufgerufenen Datei ein session_start() drinliegen.
                Ich habe das bei mir in die config.php gepackt, die bei jedem Seitenaufruf included wird. Damit gehts.

                Grüße, Andi

                Kommentar


                • #9
                  tralala,
                  session_start() kommt in JEDE seite, die der benutzer während einer session benutzen können soll.

                  Kommentar


                  • #10
                    Original geschrieben von graf
                    tralala,
                    session_start() kommt in JEDE seite, die der benutzer während einer session benutzen können soll.
                    ja aber damit der server auch die gleiche session wieder hoch fährt muss die session id angegeben werden

                    PHP-Code:

                    if( isset( $_COOKIE["PHPSESSID"] ) )
                    {
                       
                    $sid $_COOKIE["PHPSESSID"];
                    }
                    elseif( 
                    $_GET["PHPSESSID"] )
                    {
                       
                    $sid $_GET["PHPSESSID"];
                    }
                    elseif( 
                    $_POST["PHPSESSID"] )
                    {
                       
                    $sid $_GET["PHPSESSID"];
                    }
                    else
                    {
                       
                    $sid NULL;
                    }

                    // Starten der Session oder wieder hochladen.
                    load_session$sid );

                    $sid session_id();  


                    // Löschen aller in der Session befindlichen Daten
                    destroy_session$sid );


                    function 
                    load_session$sid NULL $cache_time "120" )
                        {
                            if( !
                    is_null$sid ) )
                            {
                                
                    session_id$sid );
                            }

                            
                    session_cache_expire$cache_time );

                            
                    session_start();
                        }

                    function 
                    destroy_session$sid NULL )
                    {
                       if( !
                    is_null$sid ) )
                       {
                           
                    session_id$sid );
                       }
                       
                    session_destroy();

                    Zuletzt geändert von Jointy; 02.07.2003, 03:26.

                    Kommentar


                    • #11
                      Ach herje! Und das riesen Ding soll in jede Datei includet werden?

                      Die Session ID wird doch zum einen in einem Coockie abgelegt und ist dies deaktiviert erzeugt der Browser doch automatisch hinter jedem Link den Anhang der Session-ID.


                      Ich habe hier mal ein kleines Scriptchen. Die Session wird jeweils beibehalten, so lange der Benutzer aktiv ist. Nach Ablauf einer einstellbaren Zeit, verfällt die Session. Z.B. geeignet für Shopsysteme. Der Benutzer kann innerhalb einer gewissen Zeit seinen Warenkorb füllen und jederzeit wiederkehren. Erst nach ablauf von z.B. einer Stunde ohne Aktion oder wiederkehren auf die Seite, verfällt die Session und somit sein Warenkorb.

                      <?

                      $endtime = 60*60*60; // Aktionszeitraum, hier 1 Stunde

                      session_name('mysid');
                      session_start();

                      if (!isset($_SESSION['timestamp'])){
                      $_SESSION['timestamp']=time();
                      }
                      if (time()-$_SESSION['timestamp'] > $endtime)
                      {
                      unset($_SESSION['timestamp']);
                      session_destroy();
                      setcookie("mysid", "");
                      Header("Location: session_end.html"); exit;
                      }

                      $_SESSION['timestamp']=time();

                      ?>


                      Grüße, Andi

                      Kommentar


                      • #12
                        Original geschrieben von andik2000
                        Ach herje! Und das riesen Ding soll in jede Datei includet werden?

                        Die Session ID wird doch zum einen in einem Coockie abgelegt und ist dies deaktiviert erzeugt der Browser doch automatisch hinter jedem Link den Anhang der Session-ID.


                        Ich habe hier mal ein kleines Scriptchen. Die Session wird jeweils beibehalten, so lange der Benutzer aktiv ist. Nach Ablauf einer einstellbaren Zeit, verfällt die Session. Z.B. geeignet für Shopsysteme. Der Benutzer kann innerhalb einer gewissen Zeit seinen Warenkorb füllen und jederzeit wiederkehren. Erst nach ablauf von z.B. einer Stunde ohne Aktion oder wiederkehren auf die Seite, verfällt die Session und somit sein Warenkorb.


                        <?

                        $endtime = 60*60*60; // Aktionszeitraum, hier 1 Stunde

                        session_name('mysid');
                        session_start();

                        if (!isset($_SESSION['timestamp'])){
                        $_SESSION['timestamp']=time();
                        }
                        if (time()-$_SESSION['timestamp'] > $endtime)
                        {
                        unset($_SESSION['timestamp']);
                        session_destroy();
                        setcookie("mysid", "");
                        Header("Location: session_end.html"); exit;
                        }

                        $_SESSION['timestamp']=time();

                        ?>


                        Grüße, Andi
                        dein timestamp geklare kannste dir klemmen, was meinst du wozu es session_cache_expire gibt !!!

                        wird die session nach ablauf der zeit aufgerufen, wird automatisch eine neue gestarten und die alte zerstört !!!

                        cya

                        Kommentar


                        • #13
                          Ok ok danke Jungs aber ich glaube ich habe das problem gelöst !
                          Zum Thema jede Seite .. ich benutze nur einseiten Template mit verschiedenen Verzweigungen ! Dennoch lag mein Fehler ein kleines Stückchen vor dem destroy da ich auch in der verzweigung nochmals die session_start() aufgerufen werden muss. Allerdings ist die sessionid und name nicht anzugeben, da diese bereit in einer temporären Tabelle mitgefürt werden zwecks Sicherheit. Dennoch danke ich euch für die umfangreiche Hilfe bei diesem Thema. So langsam blicke ich ein wenig durch bei den Sessions.

                          Hier noch mnal die richtige Lösung :

                          PHP-Code:
                          if ($customer == "logout")
                          {
                          session_start();
                          session_destroy();
                          if(!
                          session_id())
                                      {   
                          header("Location: domain.php"); // Umleitung des Browsers
                                          
                          echo "\n<p>Sie haben sich erfolgreich ausgeloggt.</p>\n"
                                          exit;
                                      }


                          Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
                          www.d-creationz.de

                          Kommentar


                          • #14
                            Original geschrieben von Jointy
                            dein timestamp geklare kannste dir klemmen, was meinst du wozu es session_cache_expire gibt !!!
                            cya
                            Na, sind wir heute mit dem falschen Fuß aufgestanden? Kein Grund pampig zu werden

                            Wollte damit nur andeuten, dass es auch wesentlich weniger braucht, um zu funktionieren, als dein langes Listing.

                            Grüße, Andi

                            Kommentar


                            • #15
                              desweitern gibt es das expire erst ab 4.2.0
                              Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
                              www.d-creationz.de

                              Kommentar

                              Lädt...
                              X