Logged_in() funktioniert nur in Firefox

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

  • Logged_in() funktioniert nur in Firefox

    Hi!

    Habe gestern in einem Test festgestellt, dass mein logged_in() nur in Firefox sauber funktioniert. Basiert auf Login-Tutorial von Mr Happiness.

    Nach geglücktem Login, rufe ich auf den folgenden Seiten, die Funktion logged_in() auf, um zu prüfen, ob er User eingeloggt ist. Bspw. die Datei 'auftragsformular.php'. Der erste Aufruf dieser Seite klappt und es werden mir verschiedene Auftragsmöglichkeiten angezeigt. Wenn ich davon eine auswähle, wird die Seite erneut aufgerufen und mittels Prüfung $_GET-Variablen ein anderer Teil des Skripts ausgeführt. Aber in IE und Opera werde ich plötzlich ausgeloggt! ???

    in der sessionhelpers.inc.php steht
    PHP-Code:
    function check_user($username$userpass)
    {
        
    $sql "SELECT `UserID` FROM `users` WHERE `NickName`='".$username."' 
    AND `UserPass`=MD5('"
    .$userpass."') LIMIT 1";
        
    $result mysql_query($sql) or die(mysql_error());
        if (
    mysql_num_rows($result)==1)
        {
            
    $user mysql_fetch_assoc($result);
            return 
    $user["UserID"];
        }
        else
            return 
    false;
    }

    function 
    login($userid)
    {
        
    $sql="UPDATE `users` SET `UserSession`='".session_id()."' WHERE `UserID`=".$userid;
         
    mysql_query($sql);
    }

    function 
    logged_in()
    {
        
    $sql="SELECT `UserID` FROM `users` WHERE `UserSession`='".session_id()."' LIMIT 1";
        
    $resultmysql_query($sql);
          return ( 
    mysql_num_rows($result)==1);
    }

    function 
    logout()
    {
        
    $sql="UPDATE `users` SET `UserSession`=NULL WHERE `UserSession`='".session_id()."'";
         
    mysql_query($sql);

    in der auftragsformular sieht es so aus:
    PHP-Code:
    session_start();
    include 
    'incs/sessionhelpers.inc.php';
    include 
    'incs/auftragshelpers.php';

    baueauftragsform(); 
    in der auftragshelpers.php liegt die Funktion baueauftragsform()
    PHP-Code:
    function baueauftragsform()
    {
    if (!
    logged_in()) showlogdivs();
    else
    {
      if (
    $_GET['ordertyp'] == '')
      {
        echo 
    "<p>Wählen Sie zunächst eine Auftragsart aus.</p>\n";
        echo 
    "<p><a href='auftragsformular.php?ordertyp=basis'>Auftrag 1</a></p>\n";
        echo 
    "<p><a href='auftragsformular.php?ordertyp=pro'>Auftrag 2</a></p>\n";
      }
      elseif (
    $_GET['ordertyp'] == 'zusatz')
      {
        echo 
    "<p>Sie wünschen Zusatzleistungen.</p>\n";
        echo 
    "<p>Zurück zur <a href='auftragsformular.php'>Auftragsauswahl</a>.</p>\n";
      }                    
      else
      {
        echo 
    "<p>Sie haben das folgende Paket ausgewählt:</p>";
        echo 
    "<form method='post' action='auftragsenden.php'>
                <input type='hidden' name='ordertyp' value='"
    .$_GET['ordertyp']."' />
                <input type='submit' name='submit' value='Bestellen' /></form>"
    ;
      }                    
    }

    Könnte es Probleme mit irgendwelchen Sicherheitseinstellungen in den o.g. Browsern geben oder gibt es ein Problem mit einem Skript oder dem Aufbau dieser Geschichte?

    Woran könnte es liegen?

    Bin wie immmer dankbar für eure Tipps!
    [FONT=arial][COLOR=orangered]
    Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
    [/COLOR]

    ... und nicht vergessen: der Ton macht die Musik ;-)

    ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
    [/FONT]

  • #2
    ohne gelesen zu haben:

    - browsereinstellungen?
    - sid übergabe?

    Kommentar


    • #3
      Wird beim nächsten Aufruf vielleicht irgendwas verändert... SessionID.. Datensatz in der DB gelöscht... oder so etwas?
      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
        @ TobiaZ

        Welche Browsereinstellungen meinst du?

        sid übergabe? ich dachte das findet automatisch statt? die ist ja in der db abgelegt und wird mit logged_in() geprüft.


        @Shurakai

        nicht das ich wüsste. Es findet eine db-Abfrage statt, aber nur mit SELECT, also keine Veränderung der Datensätze
        [FONT=arial][COLOR=orangered]
        Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
        [/COLOR]

        ... und nicht vergessen: der Ton macht die Musik ;-)

        ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
        [/FONT]

        Kommentar


        • #5
          Original geschrieben von Smartsoul
          sid übergabe? ich dachte das findet automatisch statt?
          Bevor du eine Technik einsetzt, informiere dich bitte, wie sie funktioniert.

          http://www.php.net/manual/de/ref.session.php beschreibt, auf welche Arten die Übergabe der Session-ID passieren kann.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            @wahsaga

            Hatte mich schon ein wenig informiert unter anderem hier:

            http://tut.php-q.net/sessions.html

            Um eine Session-ID zu bekommen, muß man eine Session anlegen. Dies geschieht mit der Funktion session_start. Es ist darauf zu achten, dass die Session nach Möglichkeit vor allem anderen gestartet wird, damit alle Teile des Scriptes darauf zugreifen können (auch etwaige Includes).
            [COLOR=darkblue]Da PHP selbstständig überprüft, ob eine Session schon existiert, oder ob eine neue angelegt werden muß, braucht man sich auch nicht darum zu kümmern. [/COLOR]
            Vielleicht habe ich mich missverständlich ausgedrückt mit 'automatisch' meinte ich automatisch bei Aufruf von session_start()

            Habe auch in allen Dateien betroffenen Dateien session_start() ganz oben am Dateianfang drin.

            Oder ist damit die Übergabe der SessionId noch nicht gewährleistet?
            [FONT=arial][COLOR=orangered]
            Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
            [/COLOR]

            ... und nicht vergessen: der Ton macht die Musik ;-)

            ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
            [/FONT]

            Kommentar


            • #7
              Auf der von mir verlinkten Manual-Seite gibt es extra einen Abschnitt mit der Überschrift "Übermittlung der Session-ID" ...!
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                @wahsaga

                Hab ich gesehen und gelesen. Cookies und als URL-Parameter.

                Wenn ich die SessionID nicht als URL-Parameter übergebe, sollte sie wohl im Cookie übergeben werden, oder?

                Habe im IE schon die Einstellungen bzgl. Cookies auf niedrigste Datenschutzstufe (alle Cookies annehmen) gestellt und trotzdem funktioniert es nicht.

                Außerdem verstehe ich nicht, wenn an meinen Skripten was falsch sein sollte, wieso schafft es Firefox dann problemlos, sich so zu verhalten als wäre alles o.k.?
                [FONT=arial][COLOR=orangered]
                Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
                [/COLOR]

                ... und nicht vergessen: der Ton macht die Musik ;-)

                ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
                [/FONT]

                Kommentar


                • #9
                  Falls es wen interessiert:

                  Habe nun alle Links so zusammengesetzt:
                  PHP-Code:
                  <A HREF="beispiel.php?<?php echo strip_tags(SID)?>">
                  Nun wird die SID im URL übertragen und es funktioniert nun alles auch in IE und Opera.

                  Dank an wahsaga, der mich mit seinem Link auf die richtige Fährte gebracht hat. Auch wenn mir eine konkretere Hilfe sicher lieber gewesen wäre.

                  Was mir immer noch nicht klar ist:

                  Wieso hat Firefox keine Probleme gemacht? Kann mir das wer erklären?
                  [FONT=arial][COLOR=orangered]
                  Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
                  [/COLOR]

                  ... und nicht vergessen: der Ton macht die Musik ;-)

                  ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
                  [/FONT]

                  Kommentar


                  • #10
                    Weil Firefox vermutlich die Session-Cookies akzeptiert hat.

                    Kommentar


                    • #11
                      Aber wenn ich die Einstellungen im IE auf "alle Cookies annehmen" gestellt habe und es trotzdem nicht funktioniert???
                      [FONT=arial][COLOR=orangered]
                      Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
                      [/COLOR]

                      ... und nicht vergessen: der Ton macht die Musik ;-)

                      ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
                      [/FONT]

                      Kommentar


                      • #12
                        das glaube ich zwar nicht, aber was soll ich zu dieser behauptung sagen.

                        fakt ist (entsprechende servereinstellungen vorausgesetzt), wird zu erst versucht ein cookie zu setztén, was bei deinen einstellungen auch funzen sollte. nur wenn das nicht geht, muss die sid per get/post übergeben werden.

                        Kommentar


                        • #13
                          Ich könnte dir ein Screenshot senden
                          [FONT=arial][COLOR=orangered]
                          Mein Buchtipp: Gegenseitige Hilfe (Michail Kropotkin)
                          [/COLOR]

                          ... und nicht vergessen: der Ton macht die Musik ;-)

                          ... aber, manchmal ruft man in den (Forum-)Wald hinein und es schallt ganz anders heraus
                          [/FONT]

                          Kommentar

                          Lädt...
                          X