[php5] Kleines Problem mit Sessions

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

  • [php5] Kleines Problem mit Sessions

    Moin!

    Ich habe mir einen Login geschrieben auf Sessions basierend....
    Das Funktioniert alles einwandfrei.

    Wenn nun aber ein User auf meiner Seite rumsurft, dann mal kurz auf eine andere Seite geht, und dann wieder zurückkommt, wird ihm angezeigt, dass er sich bitte anmelden soll.

    Wäre ja auch kein Problem...
    Aber man kann sicht nicht mehr einloggen....
    Erst wenn man den Browser schließt und wieder öffnet geht das wieder...

    Hier mal der Code für die Sessionverwaltung

    PHP-Code:
    session_save_path("./".SESSION_PATH);
            
    session_start();
            
    $PHPSESSID=session_id(); // zum Debugging!
            
            
    if(!session_is_registered("ID_USER"))
            {
                
    session_register("ID_ARTIKEL_ARTIKELVERWALTUNG");
                
    session_register("ID_ARRAY");
                
    session_register("ID_USER");
                
    session_register("ID_USER_KLICKS");
                
    session_register("ID_USER_TYPE");
                
    session_register("ID_USER_CODE");
                
    session_register("ID_USER_LAND");
                                    } 

  • #2
    na - wenn Du das wirklich selber geschrieben hast,
    dann weißt Du auch woran es liegt.

    session_register ist ürbrigens veraltet und sollte nicht
    mehr benutzt werden.

    edit:

    ich seh gerade: Du hast es wohl selber geschrieben.

    $_SESSION['user'] = "xxx";

    Arrayschlüssel werden in eckigen Klammern angegeben,
    nicht in runden.

    Mach mal error_reporting(E_ALL); an den Anfang Deines Scripts,
    vielleicht schreit php um Hilfe und keiner hört zu.
    Zuletzt geändert von Koala; 17.05.2006, 10:58.

    Kommentar


    • #3
      Wenn ich es wüsste würde ich nicht fragen...

      Da es ein altes Programm ist, welches ich umzubauen gedenke werde ich wohl auch session_register verwenden, solange das nicht Fehler generiert.

      Kommentar


      • #4
        hab mein Posting oben noch mal editiert.

        Kommentar


        • #5
          Original geschrieben von Koala
          Arrayschlüssel werden in eckigen Klammern angegeben,
          nicht in runden.
          Ich habe gar kein Array?!

          Kommentar


          • #6
            doch - $_SESSION ist ein Array

            Kommentar


            • #7
              Da ich kein $_SESSION verwende, habe ich auch kein Array.
              Mein registrierten Session Variablen sind keine Arrays.

              Habe das Problem aber mittlerweile gelöst.
              Es lag an einer mir unverständlichen Einstellung
              session.gc_maxlifetime : 70

              Was wohl dazu geführt hat, dass Sessions nach 70 Sekunden ungültig wurden.

              Habe es nun auf 3600 gestzt und schon läuft das.

              Kommentar


              • #8
                so ein Quatsch - obs Dir paßt oder nicht
                $_SESSION ist ein (superglobales) Array.

                und so gehts nicht:

                $_SESSION("asdsad") = "ADFD";

                sondern so:


                $_SESSION['asdsad'] = "ADFD";

                Kommentar


                • #9
                  Evtl. schaust Du noch mal meinen Code an:

                  PHP-Code:
                  session_save_path("./".SESSION_PATH);
                          
                  session_start();
                          
                  $PHPSESSID=session_id(); // zum Debugging!
                          
                          
                  if(!session_is_registered("ID_USER"))
                          {
                              
                  session_register("ID_ARTIKEL_ARTIKELVERWALTUNG");
                              
                  session_register("ID_ARRAY");
                              
                  session_register("ID_USER");
                              
                  session_register("ID_USER_KLICKS");
                              
                  session_register("ID_USER_TYPE");
                              
                  session_register("ID_USER_CODE");
                              
                  session_register("ID_USER_LAND");
                                                  } 
                  Nun sage mir:
                  1. wo ich $_SESSION verwende?
                  2. Wo ich ein Array habe
                  3. Wo ich, Deiner Meinung nach, "[]" anstelle von "()" verwenden sollte.
                  4. Wo ich, Deiner Meinung nach, fälschlicherweise $_SESSION("asdsad") = "ADFD"; genutzt habe.
                  Bin ja noch blutiger Anfänger und lasse mich gerne aufklären.
                  Zuletzt geändert von jonas01; 17.05.2006, 13:43.

                  Kommentar


                  • #10
                    Original geschrieben von jonas01
                    Nun sage mir:
                    1. wo ich $_SESSION verwende?
                    Leider gar nicht ...


                    session_register ist veraltet, und sollte nicht mehr benutzt werden.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      sobald Du eine Session startest mit session_start
                      wird ein Array erzeugt.

                      PHP-Code:
                      <?php
                      // Sie sollten session_register() nicht verwenden
                      $barney "A big purple dinosaur.";
                      session_register("barney");

                      // Ab PHP 4.1.0 ist die Verwendung von $_SESSION vorzuziehen
                      $_SESSION["zim"] = "An invader from another planet.";

                      // Die alte Methode war, $HTTP_SESSION_VARS zu verwenden
                      $HTTP_SESSION_VARS["spongebob"] = "He's got square pants.";
                      ?>
                      aber Du hast Recht, bei der alten Funktion session_register werden
                      keine eckigen sondern runde Klammern geschrieben.

                      Ich weiß ja nicht warum Du so alte Sachen verwendest.

                      Kommentar


                      • #12
                        Aha...

                        Und deshalb läuft das ja nun auch bei mir...
                        Das session_register veraltet ist, ist mir klar...
                        Das war aber NIE Bestandteil meiner Frage.

                        Ansonsten hätte ich gefragt: "Ist session_register veraltet?"

                        Meine Frage stand ganz oben in diesem Thread. Leider wurde nicht darauf eingegangen.
                        Ob Session_register nun alt ist oder nicht... es läuft...
                        Und da das gesamte Programm auf einem Uralt Server in einem Intranet mit 50 Usern läuft werde ich da auch nix dran ändern.... Warum auch?

                        Da ich nun aber mein Problem selbst lösen konnte, kann dieser Beitrag geschlossen werden.

                        Kommentar


                        • #13
                          Aus Deinem selbstgeschriebenen Code, den Du hier gepostet hast, ging ja auch nicht hervor wie man sich einloggt.

                          Aber Hauptsache Du hast Deine für Dich richtige Lösung und es "funzt".

                          Kommentar


                          • #14
                            Aber WARUM sollte man denn session_register nicht mehr verwenden?
                            Es läuft doch fehlerfrei und auch sicher....

                            Evtl. kannst Du mir das ja beantworten?

                            Kommentar


                            • #15
                              Hier und in anderen php-Foren schlagen täglich Leute auf,
                              weil ihre Scripte nicht mehr funzen, da sie alte Scripte mit
                              alten Funktionen verwenden, wobei die meisten Probleme
                              mit Variablen zusammenhängen auf die nicht mehr zugegriffen
                              werden kann. (globals off)

                              Mag sein, daß Dein Script ne zeitlang läuft,
                              aber irgendwann wirst es eh umschreiben müssen.

                              Wieso also nicht gleich richtig?

                              Dazu im Handbuch:

                              Achtung

                              Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.

                              register_globals: Wichtiger Hinweis: Seit PHP 4.2.0 ist die Standardeinsteillung für die Konfigurationsoption register_globals off. Die PHP Community ermutigt Alle, sich nicht auf diese Option zu verlassen und Alternativen wie superglobals zu verwenden.
                              Zuletzt geändert von Koala; 17.05.2006, 14:19.

                              Kommentar

                              Lädt...
                              X