Session Problem

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

  • Session Problem

    Hallo!

    Kann mir einer helfen ich habe ein Session Problem auf meiner Webseite.

    Zum einen:
    Es wird eine Session (lang_session) für die ausgewählte Sprache erzeugt.
    ----> Bei wechsel auf allen anderen Seiten bleibt die Session immer bestehen und es funktioniert alles bestens.

    Zum anderen:
    Es wird eine weitere Session erzeugt wenn man auf mein Login tpl kommt und sich einloggen möchte. Wenn man diese Seite wieder verlässt dann ist die lang_session verloren gegangen. Die Sprache steht dann wieder auf Default auch wenn ich sie vorher auf englisch geändert habe.


    hat jemand eine idee wie ich die session mit der anderen verbinde oder so. damit sie erhalten bleibt. ich habe das gefühl als wird die lang_session durch die login_session weg geworfen.


    vielen dank schonmal im voraus.

  • #2
    es gibt nur EINE Session.

    Eine Session beschreibt die Verbindung vom Server zu genau einem Client wobei die Session anhand der SessionId identifiziert wird.

    Kommentar


    • #3
      Ja du setzt die Session einfach nicht auf defaultwerte wenn es schon eine gibt.
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        @Shurakai

        Du meinst, man kann mehrere Sessions gleichzeitig haben ?

        Dann kann man auch separat die Sessions löschen etc. ?

        Was macht dann session_destroy in diesem Zusammenhang ?

        Kommentar


        • #5
          ok! kann man mehrere werte in einer session speichern? ich denke doch schon.

          das problem ist das ich für einen genauen redirect mit session_destroy(); die session kille.

          geht das das ich mit denm befehl auch nur einen bestimmten wert aus einer session zerstöre oder geht dabei die ganze session flöten?

          ich werd mal posten was ich da so hab in der logon.php

          PHP-Code:
          // Für die Sprache:
          <?php

          if (!isset($_SESSION)) {
              
          session_start();
              }
          if ( !isset(
          $_SESSION['lang_session']) )
              {
              
          $_SESSION['lang_session'] = "de";
              
          $absolute_include="lang/lang_de.php";
              
          $folder_depth substr_count($_SERVER["PHP_SELF"] , "/");
              if(
          $folder_depth == false$folder_depth 1;
              @include(
          str_repeat("../"$folder_depth 1) . $absolute_include); 
              }
          else if( isset(
          $_SESSION['lang_session']) )
              {
              
          $absolute_include="lang/lang_".$_SESSION['lang_session'].".php";
              
          $folder_depth substr_count($_SERVER["PHP_SELF"] , "/");
              if(
          $folder_depth == false$folder_depth 1;
              @include(
          str_repeat("../"$folder_depth 1) . $absolute_include);
              }
          else
              {
              
          $_SESSION['lang_session'] = "de";
              include(
          "lang/lang_de.php");
              }
          ?>



          // Für den redirect:
          <?php
          session_start
          ();

          // Redirect-Ziel
          if ($_SESSION['redirectLink']) {
              
          $redir_target $_SESSION['redirectLink'];
              
          $login_text $lang['login9'];
          }
          else {
              
          $redir_target '/index.php';
              
          $login_text $lang['login1'];
          }

          session_destroy();
          ?>
          hoffe das hilft ein wenig.

          Kommentar


          • #6
            Schau ins manual und überleg dir was session_destroy macht. Weiterhin überlegst du dir, wie du einen einzelnen Wert löschst.

            Du bist zwar neu und ein Anfänger, aber das Denken nehmen wir dir hier nicht ab.


            @Koala: Naja, sicher geht das. Geh mal auf ne Seite von dir mit ner Session, deaktiviere Cookies und lösche jeden Link mit ner SessionID raus. Du wirst keine Session gestartet kriegen. Aber das meinte ich garnicht, sondern vielmehr dass er nicht gleich die Session löschen und ne neue anlegen soll, sondern die alte weiterbenutzen. Fertig.
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #7
              lol! dachte das wäre ein forum wo einem geholfen wird!

              was session_destroy macht erklärt sich schon von alleine! dachte auch das wüsste jemand ausm stehgreif und müsste net extra dafür nachdenken, dachte ich hätte es hier mit kompetenten php leuten zu tun.

              werd mich NOCHMALS auf die suche begeben, danke für eure hilfe.

              Kommentar


              • #8
                Habs jetzt hinbekommen! und für alle die es auch mal brauchen poste ich jetzt hier das ergebnis!

                PHP-Code:
                anstatt:

                session_destroy()
                ^^ 
                womit ihr wirklich alles aus eurer session löscht

                lieber
                :
                unset(
                $_SESSION[redirectLink]);
                ^^ 
                womit ihr geziehlt eine sessionvariable löschen könnt
                bin ein anfänger und weiß jetzt net ob das so sauber ist, aber bei mir funkt es auf jedenfall besten!

                Kommentar


                • #9
                  PHP-Code:
                  session_start(); 
                  an jede Datei, in welcher die Session verfügbar sein soll, ohne Prüfung auf isset($_SESSION)

                  und
                  PHP-Code:
                  session_destroy(); 
                  in die Datei, die sich weit verbreitet "logout.php" oder so nennt!
                  Liebe Grüße,
                  SteKoe!

                  PHP Tutorials
                  Peter Kropff | Quakenet | Schattenbaum.net

                  Kommentar


                  • #10
                    Original geschrieben von noob_in_php
                    lol! dachte das wäre ein forum wo einem geholfen wird!

                    was session_destroy macht erklärt sich schon von alleine! dachte auch das wüsste jemand ausm stehgreif und müsste net extra dafür nachdenken, dachte ich hätte es hier mit kompetenten php leuten zu tun.

                    werd mich NOCHMALS auf die suche begeben, danke für eure hilfe.
                    ???

                    was redest Du ?

                    Meiner Meinung nach sind mehrere Sessions gleichzeitig nicht möglich:

                    $_SESSION['eins'] und $_SESSION['zwei'] sind NICHT zwei Sessions,
                    sondern zwei Sessionvariablen.

                    Und session_destroy würde die Session zerstören - Du könntest also auf beide Werte nicht mehr zugreifen.

                    So - Du weißt es ja besser - jetzt zeigst mir mal bitte Deine "zwei" Sessions.

                    Naja, sicher geht das. Geh mal auf ne Seite von dir mit ner Session, deaktiviere Cookies und lösche jeden Link mit ner SessionID raus. Du wirst keine Session gestartet kriegen.
                    ja - und ? Es ging mir darum, daß er behauptet gleichzeitig zwei Sessions zu haben. Und er hat lediglich zwei Sessionvariablen.
                    Also:
                    wenn es möglich ist zwei Sessions zu haben:
                    wie lösch ich dann eine Session separat ??
                    Wär mir neu, daß so was geht.

                    @noob

                    wenn Du zwei Sessions hast, dann müßte ja session_start() zwei mal hintereinander auf jeder Seite stehn um beide Sessions zu starten.

                    Zu welcher Session gehört denn dann $_SESSION['lang_session'] ??? Woran erkennst Du das ?

                    So was regt mich auf - keine Ahnung haben, aber die Leute blöd anmachen.
                    Zuletzt geändert von Koala; 11.05.2007, 08:19.

                    Kommentar


                    • #11
                      Es wird eine weitere Session erzeugt wenn man auf mein Login tpl kommt und sich einloggen möchte. Wenn man diese Seite wieder verlässt dann ist die lang_session verloren gegangen. Die Sprache steht dann wieder auf Default auch wenn ich sie vorher auf englisch geändert habe.


                      hat jemand eine idee wie ich die session mit der anderen verbinde oder so. damit sie erhalten bleibt. ich habe das gefühl als wird die lang_session durch die login_session weg geworfen.
                      Nochmal:
                      Du hast keine zwei Sessions, sondern zwei Variablen.

                      Kommentar


                      • #12
                        Original geschrieben von noob_in_php
                        lol! dachte das wäre ein forum wo einem geholfen wird! [...]
                        dachte ich hätte es hier mit kompetenten php leuten zu tun.
                        Gewöhne dir diese Arroganz bitte ab.

                        Schon in deinem anderen Thread letzte Tage musste jemand äusserst viel Geduld mit dir aufbringen, und dir so gut wie alles vorkauen.

                        Du hast absolut keinen Grund, den Mund so weit aufzureissen.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          @noob
                          PHP-Code:
                          unset($_SESSION[redirectLink]); 
                          Ist falsch und würde bei entsprechendem Error Reporting mittels einer Warning quittiert.
                          Oder hast du eine Konstante in einer Session Var gespeichert ? Wohl kaum

                          Gruss

                          tobi
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Original geschrieben von noob_in_php
                            [B]Habs jetzt hinbekommen! und für alle die es auch mal brauchen poste ich jetzt hier das ergebnis!

                            PHP-Code:
                            [b]anstatt:

                            session_destroy()
                            ^^ 
                            womit ihr wirklich alles aus eurer session löscht

                            lieber
                            :
                            unset(
                            $_SESSION[redirectLink]);
                            ^^ 
                            womit ihr geziehlt eine sessionvariable löschen könnt.
                            [/
                            b


                            bin ein anfänger und weiß jetzt net ob das so sauber ist, aber bei mir funkt es auf jedenfall besten!
                            das war mein letzter post wo ich von SESSION variable rede!! also was redet ihr da??



                            Zitat von wahsaga
                            Arrogant und so
                            Was hat das bitte mit Arroganz zu tun? weißt du was das Wort bedeutet?
                            Ich finde eher das ihr ein wenig arrogant seid! nur weil ihr mehr ahnung von php habt tut ihr so als ob...

                            ich habe lediglich in dem beitrag gefragt ob jemand eine idee zu meinem problem hat. dazu sind solche foren doch da oder net?
                            dann bekomme ich solch eine antwort...

                            zu meinem ersten problem:
                            ich hatte gefragt, ob mir jemand mit meinem lang problem hilft. eine (ricola) war so freundlich mir zu helfen. andere wiederrum (die in diesem beitrag wieder aktiv waren) haben sich immer nur eingemischt habe mich provoziert und haben nie konstruktive beispiele gebracht!
                            und dann durfte ich mir noch anhören, dass ich deren vorschläge nicht annehme.

                            und jetzt sagst du zu mir lieber h. moderator, ich soll hier nicht so arrogant sein?? ich habe wirklich gedacht oder denke es immer noch das ichs hier mit sehr kompententen php freaks zu tun habe. und das diese mir ein tip auf richtigen weg geben (net alles für mich programmieren, beim ersten wars von dieser person auch freiwillig). hätte lediglich einen tip gebraucht (und nicht lese dir mal durch was session_destroy macht, ich denke, so glaube ich jeder, der zumindestens englisch kann, weiß was das bedeutet) Meine Frage war ja auch, ob es überhaupt möglich ist 2 werte in eine gültigen session zu haben. Schuldige das meine aussagen immer nicht so treffend sind. aber heute weiß ich das man mehrere SESSION_VARABLEN in einer session haben kann und mit unset($session['Vriablennamen']); eine Session_variable aus einer gültigen session löschen kann. wo wäre jetzt das problem gewesen mal auf die funktion unset zu verweisen? programmieren tu ich mir meinen kram jetzt schon selbst.

                            verstehe das ganze problem nicht, dieses forum ist doch ein php support forum.? oder bin ich hier etwa falsch?

                            Kommentar


                            • #15
                              das Problem ist, daß ich Dich auf den Unterschied zwischen einer Sessionvariablen und einer Session aufmerksam machen wollt und daß DU dann meinst: "ich dachte ich hätte es hier mit kompetenten Programmierern zu tun".

                              Kommentar

                              Lädt...
                              X