Ankündigung

Einklappen
Keine Ankündigung bisher.

Und noch ein Session Problem...

Einklappen

Neue Werbung 2019

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

  • Und noch ein Session Problem...

    Hallo

    1. Ja ich habe die Boardsuche benutzt.
    2. Ja ich habe mir http://de.php.net/session durchgelesen.
    3. Nein, ich habe keine Lösung für mein Problem gefunden.
    4. Ja, vielleicht bin ich blind.

    Also ... zu meinem Problem. Ich arbeite an einem Loginsystem für meine Seite. Das ganze funktioniert schon ganz gut. Ich habe eine Tabelle für Benutzer, in der in einer Spalte gespeichert wird, ob der Benutzer ein Admin ist, oder nicht. Wenn ich nun die Session Variable festlege, damit PHP später noch weiß ob ich ein Admin bin oder nicht, dann "vergisst" es den in der Variable gespeicherten Wert allerdings nach ein paar Klicks auf verschiedene Bereiche meiner Homepage.

    Ich lege das ganze in der login.php so fest:

    Code:
    if($user[$i]['isadmin'] == 1){$_SESSION['isadmin'] = "yes";}
    Nun wird auf der index.php die Variable wieder aufgerufen und somit festgestellt ob der Link zur Administration angezeigt werden soll, oder nicht:

    Code:
    if($_SESSION['isadmin'] == "yes"){$showadminlink = "
    
    Administration";
    Aber wie schon gesagt. Wenn ich ein wenig auf der Seite rumklicke, dann wird plötzlich der Link zur Administration nicht mehr angezeigt, und der Wert "yes" in der Variable ist futsch.

    Edit: Die Session ID wird per Cookie weitergegeben.

    Kann mir jemand dabei helfen?

  • #2
    Steht auf jeder aufgerufenen Seite davor irgendwo session_start(); ?

    Kommentar


    • #3
      Zitat von Igäl
      Steht auf jeder aufgerufenen Seite davor irgendwo session_start(); ?
      Ja, session_start() steht quasi überall, weil es als erstes in der index.php steht, und alle anderen Dateien per include ""; in die index.php eingefügt werden.

      Kommentar


      • #4
        Vielleicht hilft es, wenn du die Variable im index.php ausgibst und dann beobachtest, wie sie sich verändert.

        Kommentar


        • #5
          Zitat von Igäl
          Vielleicht hilft es, wenn du die Variable im index.php ausgibst und dann beobachtest, wie sie sich verändert.
          Danke, aber genau das habe ich schon gemacht. Ich bleibe weiterhin eingeloggt (das lasse ich mir per "Sie sind eingeloggt als [Benutzername]" anzeigen, aber diese Variable verliert ihren Wert.

          Hat es vielleicht etwas damit zu tun, das ich trotz der Cookieübergabe, die SID an jede URL mit anhängen will? Das funktioniert meines Wissens nach jedoch nur mit der Konstanten "$PHPSESSID" wenn die Cookiesetzung standardmäßig aktiviert ist.

          Deshalb hänge ich an jede URL einfach ein "&SID" an, was dann jedoch zur Folge hat, daß jede URL dann ungefähr so aussieht

          Code:
          http://www.beispiel.de/index.php?action=gaestebuch&
          da die Konstante SID bei Cookieübergabe ja keinen Wert enthält. Sollte aber jemand Cookies deaktiviert haben, dann wird dahinter die Session ID angehängt.

          Kommentar


          • #6
            Ist register_globals deaktiviert?

            Kommentar


            • #7
              Ich habe Dinge mit der Session ID immer mit der Funktion session_id() gehandelt. Ansonsten hab ich wenig Erfahrung mit Cookies. Tut mir leid.

              Vielleicht hilft das: http://de.php.net/manual/de/ref.session.php

              Kommentar


              • #8
                Zitat von xabbuh
                Ist register_globals deaktiviert?
                Also laut phpinfo() ist register_globals aktiviert. Das kann ich aber auch nicht deaktivieren, weil ich da bei meinem Provider (1&1) keinen Zugriff darauf habe. Oder doch?

                Kommentar


                • #9
                  Wenn register_globals aktiviert ist, wäre es möglich, dass die Sessionvariable mit einer Anweisung wie $isadmin = '' überschrieben wird.

                  Kommentar


                  • #10
                    Zitat von xabbuh
                    Wenn register_globals aktiviert ist, wäre es möglich, dass die Sessionvariable mit einer Anweisung wie $isadmin = '' überschrieben wird.
                    DANKE!!!

                    Ich hab' meinen Code nochmal durchsucht und in der benutzer.php, die eine Auflistung aller Benutzer anzeigt, wurde von mir ebenfalls eine Variable namens $isadmin benutzt. Und solange nur Admins registriert waren, war die auf 1. Kam jetzt ein anderer Benutzer hinzu, der kein Admin war, dann wurde der als letzterer Angezeigt, und schon war die Variable auf 0...

                    Oh Man. Also dann trifft doch Nummer 4 zu: Ich bin blind.

                    Kommentar

                    Lädt...
                    X