Frage zum Tutorial von MrHappiness

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

  • Frage zum Tutorial von MrHappiness

    Hallo,

    ich habe das script zum login aus dem tutorial ausprobiert. soweit klappt das ganz gut.

    aber wie kann ich z.b. auf die emailadresse des users zugreifen, wenn er eingeloggt ist?

    sobald der user eingeloggt ist wird seine sessionid in der tabelle gespeichert und der user darf auf die geschützten seiten. jetzt benötige ich z.b die emailadresse oder den usernamen um auf den geschützten seiten speziellen inhalt genau für "diesen" user anzuzeigen.

    leider komme ich mit meinem bißchen wissen in sql nicht weiter. wäre nett wenn mir einer helfen würde.

    außerdem erwähnt mrhappiness die "lastAction" methode. leider ist nicht erklärt wie man sie einbaut. vielleicht kann mir dazu auch jemand etwas sagen! das ich die tabelle um eine spalte "lastaction" erweitern muß ist klar. aber wie muß das feld heißen?? varchar oder timestamp ...oder...??

    ... und wo baue ich was ein, damit der user z.b. nach 5 minuten nichtstun automatisch ausgeloggt wird ??

    danke für eure hilfe im vorraus!

    gruß cyberbob

  • #2
    schau dir mal das SELECT in der funktion logged_in() an, das sollte dir weiterhelfen

    lastaction sollte timestamp oder datetime sein

    das ausloggen is glaub ich auch hier irgendwo, wenn nicht:

    die funktion logged_in erweitern um
    Code:
    UPDATE tabelle 
      SET usersessioN=NULL
    WHERE lastaction<NOW() - INTERVAL 5 MINUTE
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      danke für den tipp!!

      aber ich habe mir sämtliche funktioenn angeschaut. trotzdem komme ich nicht drauf. egal was ich auch ausprobierte..es ging nicht!

      ich versuche immer an das array zu kommen und dann grauf ich mit $row[1] oder so zu. bei allen anderen sql abfragen klappt es nur bei der mit der session halt nicht!

      Kommentar


      • #4
        schade ne einfache antwort mit nem sql befehl hätte mir gereicht :-(

        Kommentar


        • #5
          PHP-Code:
          ...
          function 
          get_udat() 

              
          $sql="SELECT   
              FROM *
              WHERE UserSession='"
          .session_id()."' 
              LIMIT 1"

              
          $valmysql_query($sql); 
                return 
          mysql_fetch_array($val); 

          ....

          $value $class->get_udat();
          //aufrufen
          echo $value['UserName']; 
          Auch nur, weil ich heut nen sehr guten Tag hab. Falls du sowas nicht hinbekommst, dann solltest du lieber mal ein wenig Grundlagen lernen, weil auf die Dauer bringt des n S*****.
          Für Rechtschreibfehler übernehme ich keine Haftung!

          Kommentar


          • #6
            danke für deine hilfe. ich werde es nachher direkt ausprobieren.

            ich denke...grundlagen kann ich! nur sessions gehören wohl eher weniger zu grundlagen. außerdem ist so ein forum genau dafür eingerichtet um user zu helfen und nicht zu kritisieren.

            aber trotzdem danke für die hilfe!

            gruß cyberbob

            Kommentar


            • #7
              außerdem ist so ein forum genau dafür eingerichtet um user zu helfen und nicht zu kritisieren.
              Das sehe ich gaanz anders. Das Forum ist dazu da, Usern zu helfen, sich selbst zu helfen. Eine Antwort zu jeder noch so grundlegenden Frage, immer begleitet von einem "schönen Tag noch!", bekommst Du bei einer bezahlten Hotline - die dieses Forum nicht ist.

              Kommentar


              • #8
                nur sessions gehören wohl eher weniger zu grundlagen.
                Da hast du wohl recht. Nur wenn ich mit Session arbeite gehe ich intuitiv nach Session Funktionen. Wenn ich das gelesen und verstanden habe erübrigen sich die meisten Fragen. Was dann noch unklar ist, ist "keine Grundlage".

                Offe

                Kommentar


                • #9
                  soo...habe ein wenig getüfftelt... und es klappt. zumindest kann ich auf die userdaten zugreifen.

                  was nicht klappt ist das "lastaction"

                  wie von mr. happy geschrieben habe ich die funktion logged_in umgebaut:

                  PHP-Code:

                  function logged_in() 

                      
                  $sql="SELECT UserId 
                      FROM users 
                      WHERE UserSession='"
                  .session_id()."' 
                      LIMIT 1"

                      
                  $resultmysql_query($sql); 
                        return ( 
                  mysql_num_rows($result)==1); 
                      
                      
                  $sql "UPDATE users SET UserSession=NULL WHERE lastaction < NOW() - INTERVAL 2 MINUTE ";
                      
                  $erg mysql_query ($sql);
                      

                  und auf jeder php seite die der user aufruft steht folgendes drin:

                  PHP-Code:

                  //
                  // LastAction des Users aktualisieren
                  //
                   
                  $sql1 "SELECT * FROM users WHERE UserSession = '".session_id()."'";
                  $result mysql_query($sql1$conn);
                  while (
                  $reihe mysql_fetch_array($resultMYSQL_NUM)) {

                  $sql2 "UPDATE users SET LastAction  = NOW() WHERE UserID = $reihe[0]";
                  $erg mysql_query ($sql2);

                  ist vielleicht nicht die eleganteste lösung...aber ich lerne ja noch.

                  folgendes steht am anfang jeder PHP-seite:

                  PHP-Code:
                  if (!logged_in()) 
                  {
                  header ("Location: do_login.php");

                  Die LastActionSpalte in der Tabelle wird immer aktualisiert, sobald ein User sich auf den "geschützten" seiten bewegt.

                  was halt nicht klappt, ist das die sessions nach 2 minuten "nixtun" gelöscht werden.

                  ich habe die seite:
                  mysql datum und zeit

                  mehrfach gelesen...ein anhaltspunkt für den fehler habe ich jedoch nicht gefunden :-(

                  vielleicht wärt ihr nochmal so nett und helft mir auf die sprünge

                  gruß cyberbob

                  Kommentar


                  • #10
                    tja...soviel zum thema ....das forum hilf dir... :-(

                    Kommentar


                    • #11
                      ja, tuts auch ...

                      dir selbst zu helfen ...

                      PHP-Code:
                        $resultmysql_query($sql); 
                        return ( 
                      mysql_num_rows($result)==1); 
                        
                      $sql "UPDATE users SET UserSession=NULL WHERE lastaction < NOW() - INTERVAL 2 MINUTE ";
                        
                      $erg mysql_query ($sql); 
                      was macht ne funktion, wenn in ihr return aufgerufen wird?
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        Original geschrieben von derHund
                        ja, tuts auch ...
                        war die doppeldeutigkeit absicht?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Original geschrieben von mrhappiness
                          war die doppeldeutigkeit absicht?
                          OffTopic:
                          nee, ist mir erst beim vierten mal lesen aufgefallen, ... lustitch
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            ... weiß ich nicht, was ein return macht! habe das script von mr. happy genommen. laut seiner aussage:

                            die funktion logged_in erweitern um

                            code:--------------------------------------------------------------------------------UPDATE tabelle
                            SET usersessioN=NULL
                            WHERE lastaction<NOW() - INTERVAL 5 MINUTE--------------------------------------------------------------------------------

                            das habe ich gemacht!

                            wenn noch mehr zu machen ist, dann sollte man sowas einem "neuling" auch mal sagen! kann ja nicht jeder perfekt sein!

                            Kommentar


                            • #15
                              hmm,

                              got milk?

                              return kehrt aus der function zurück, und gibt ggf. einen wert zurück ... alles was innerhalb der function _nach_ dem return steht, wird nicht wirklich abgearbeitet ... wie auch.
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X