Probleme mit Sessions

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

  • Probleme mit Sessions

    Hallo, sry für die vage Überschrift, aber mir ist nichts besseres eingefallen.
    Nun zu meinem Problem:

    Ich bastel mit einem Kommilitonen an einer Filmdatenbank, wo Freunde halt ihre DVD-Sammlung reinstellen können.
    Diese Datenbank soll mit PHP und SQL realisiert werden.

    Nun sind wir auf folgendes Problem gestoßen:

    Man soll sich später auf der Seite einloggen können, da nur eingelogte User auf die Datenbank zugreifen dürfen.
    Wir haben also ein Loginskript geschrieben, was Benutzername und Passwort über ein Formular abfragt, mit der Userdatenbank vergleicht und bei korrekter Eingabe den Username in eine Session-Variable speichert.

    Soweit, sogut.
    Nun habe ich ein bissle Code integriert, so dass mir linsk unten auf der Seite angezeigt wird: "Eingeloggt als: <Username oder halt Gast> je nachdem, ob die Session-Variable "Username" gesetzt ist oder nicht.

    Nachdem ich nun beim Login auf einloggen gehe, wird mir unten links auch schön der Username angezeigt.
    Sobald ich jedoch irgendeinen Link auf der Seite anklicke (z.B. aus der Navibar heraus) oder einen weiteren Button anklicke (z.B. um einen Film in die DB einzutragen) steht unten wieder "Eingeloggt als Gast".
    Nach ein bisschen echo's setzen scheint es nun wirklich so zu sein, dass die Session-Variable gelöscht wurde.

    Danach hab ich mal gegooglet und hier dieses Tutorial gefunden:
    http://www.php-resource.de/tutorials/read/33/1/
    Im Grunde habe ich es fast genau so gemacht wie dort erklärt.
    Ich habe also die Quelldateien von diesem Tutorial runtergeladen, die Datenbankeinträge verändert, ansonsten alles genauso gelassen und versucht mich dort einzuloggen.

    Genau das selbe Problem: Ich logge mich ein, er geht auf eine neue Seite wo steht "Login erfolgreich" + Link zu einer Seite, die halt nur eingeloggt erreichbar sein soll.
    Sobald ich auf den Link klicke haut er mich wieder auf die Indexseite, aufgrund der Abfrage

    PHP-Code:
    session_start();
    if(!
    session_is_registered('user') || $_SESSION['user'] == ""
    {
            
    header("location:index.php");
           die;

    Da ich davon ausgehe, dass das Tutorial ansich lauffähig ist , und somit mein SourceCode auch muss es an irgendwas anderes liegen, das die Session-Variablen nicht richtig gespeichert werden, wenn ich auf einen Link/Button klicke.

    Und hier meine Frage:
    Wo könnte der Fehler sein?

    Das benutze ich:
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.12) Gecko/20050919 Firefox/1.0.7

    Der Webserver:
    Apache/2.0.46 (Win32) mod_perl/1.99_10-dev Perl/v5.8.0 PHP/4.3.2 mod_ssl/2.0.46 OpenSSL/0.9.7b

    Und MySQL kommt wie folgt daher:
    \wampp2\mysql\bin\mysqld Ver 4.0.13-max-debug for Win95/Win98 on i32 0

    Falls ich vergessen habe, was zu schreiben,lasst esmich wissen.
    Ich bin für jeden Rat dankbar!

  • #2
    Hi,

    Wird session_start auf jeder Seite aufgerufen?

    Gruß Thomas

    Kommentar


    • #3
      Re: Probleme mit Sessions

      Original geschrieben von H8c0re
      PHP-Code:
      if(!session_is_registered('user') || $_SESSION['user'] == ""
      session_is_registered() solltest du, genauso wie session_register(), nicht mehr benutzen.

      Benutze (abgesehen von session_start()) ausschließlich $_SESSION - zum setzen/auslesen von Werten, für Überprüfungen isset()/empty() auf $_SESSION.

      Wenn das dein Problem noch nicht löst, dann überprüfe zunächst, ob die Session-ID korrekt ans Folgescript weitergereicht wird.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        versuch bitte
        PHP-Code:
        session_start();
         if(!
        session_is_registered('user') || $_SESSION['user'] == "") {
          
        header("location:index.php");
            die;
         } 


        so zu ändern
        PHP-Code:
        error_reporting(E_ALL);
        session_start();
        if(!isset( 
        $_SESSION['user'] )) header("location: http..../index.php");//lehrzeichen nch":"
        elseif($_SESSION['user']=="")header("location: http..../index.php"); 
        Zuletzt geändert von Slava; 28.04.2006, 19:52.
        Slava
        bituniverse.com

        Kommentar


        • #5
          Wenn dann bitte gleich richtig - ein Location-Header erfordert einen absoluten URL inkl. Protokoll-Angabe.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Danke wahsaga!
            wird gleich korregiert
            kommische weise als ich http://seite.de geschrieben habe hat es gespinnt und <a href drasus gemacht.
            also http..... muss auch verständlich sein
            Zuletzt geändert von Slava; 28.04.2006, 19:55.
            Slava
            bituniverse.com

            Kommentar


            • #7
              Original geschrieben von Slava
              Danke wahsaga!
              wird gleich korregiert
              kommische weise als ich http://seite.de geschrieben habe hat es gespinnt und <a href drasus gemacht.
              also http..... muss auch verständlich sein
              dafür gibt es unten das Häkchen bei "URLs automatisch umwandeln: fügt automatisch [ url] und [/url] um Internetadressen ein."

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Öh.. Warum nicht einfach

                PHP-Code:
                session_start();
                if(empty( 
                $_SESSION['user'] ) header("Location: http:....index.php"); 
                Das $_SESSION['user']=="" kann man sich auch sparen.
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar


                • #9
                  Hallo, sry das ich mich jetzt erst melde.

                  Also, das session_is_registered('user')-Zeug wurde in dem fertigen Skript benutzt, ich hatte es über $_SESSION gemacht.
                  Das Skript scheint wohl schon was älter...

                  Den Tipp von wahsaga folgend, habe ich dann mal die Session_ID's ausgeben lassen, nebenbei hier und da noch Kleinigkeiten am Code verändert und naja, auf einmal ging es. Leider bin ich nicht im Stande zu sagen, woran es nun wirklich lag, aber so ich mich kenne, war bei irgend ner Variablendeklaration wieder nen Tippfehler drin oder so.
                  Keine Ahnung. Trotzdem vielen Dank für eure Hilfe!

                  Kommentar


                  • #10
                    Original geschrieben von H8c0re
                    aber so ich mich kenne, war bei irgend ner Variablendeklaration wieder nen Tippfehler drin oder so.
                    programmiere auf error_reporting(E_ALL) und das passiert dir nicht ^^,

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar

                    Lädt...
                    X