zeitschleife mit php f. autom. logout !?

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

  • zeitschleife mit php f. autom. logout !?

    ich möchte erreichen, dass ein eingeloggter User nach 10 min. automatisch gekickt wird.

    von c++ her kenn ich die zähl-/prüfschleifen.

    ich habe jetzt in meine mysql-db eine spalte "time" eingefügt. hier wird UNIX-timestamp eingetragen. also ein in der zukunft liegender wert.

    dieser wert wird dann wie folgt ausgelesen:

    PHP-Code:
    <?
    $sql="SELECT time FROM users WHERE UserSession='".session_id()."'
        LIMIT 1";
     $ergebnis=mysql_query($sql);
     $starttime=mysql_result($ergebnis, "time");
     $finishtime=strftime("%Y%m%d%H%M%S", time($starttime) + 60 * 10);
     $timenow=strftime("%Y%m%d%H%M%S", time());
         if($timenow == $finishtime)
        {
            echo "Zeit abgelaufen";
        }
        else   // hier soll eine neue zeit abgerufen werden und die schleife  wieder ausgeführt werden
    ?>
    die schleife soll also so lang im hintergrund durchlaufen werden, bis "finishtime" erreicht ist.

    lässt sich das so umsetzen oder wie geht's sonst !?

  • #2
    benutz doch sessions und wenn die zeit rum ist, dann wird die session gelöscht und der user muss sich neu anmelden

    Kommentar


    • #3
      möchte aber erreichen, dass nach jedem klick auf eine ander site die 10 min. wieder neu eingetragen werden -> trennung nur bei inaktivität

      soll also nicht generell nach 10 min getrennt werden.

      Kommentar


      • #4
        ich hatte das problem auch mal, versuchs mal hiermit:

        PHP-Code:
        session_start();
        $timeout=1440// max. Inaktivität in Sekunden 

        if($_SESSION['time']+$timeout<time()){
          
        session_destroy();
          die(
        'Fehler');
        }else
          
        $_SESSION['time']=time(); 

        Kommentar


        • #5
          neee, geht so nich wirklich

          gleich beim einloggen wird "Fehler" ausgegeben.

          hab's an die site nach der login site eingetragen !?

          Kommentar


          • #6
            wird denn die Zeit in der Session überhaupt gespeichert?

            Kommentar


            • #7
              glaub nich. die zeit müsste ja eigentlich schon am anfang deklariert werden. aber dann besteht doch das problem mit der zeit bei else, oder !?

              Kommentar


              • #8
                Die Lebensdauer einer Session kannst Du über die php.ini mit
                session.gc_maxlifetime
                regulieren. "Gekickt" wird dadurch ein Benutzer natürlich nicht, aber sämtliche Session-Daten gehen verloren. Wenn dort die Login-Berechtigung gespeichert wurde, ist der Benutzer somit nicht mehr zugriffsberechtigt und muß sich neu anmelden.

                Ein "Kicken" geht nur per Javascript, mit der Funktion "setTimeout".

                In Kombination mit der PHP-Ini-Änderung sollte diese Methode einen Benutzer nach x Minuten "rauswerfen".
                Happiness is an empty error log

                Kommentar


                • #9
                  Ok, soweit bin ich jetzt mal gekommen.

                  Wie kann ich jetzt aber innerhalb von JS auf meine DB zugriffen. Will ja in beiden functions die "UserSession" löschen bzw. auf NULL setzen.
                  muss ich die php-syntax in eine andere datei auslagern u. die dann in dem js aufrufen !? *übungmachtdenmeister*

                  danke für die hilfe

                  so schaut's aus

                  PHP-Code:
                  <script language="JavaScript">
                  function 
                  del_session()
                  {
                      if (
                  this.window.closed)
                          {
                               
                  $sql="UPDATE users
                               SET UserSession=NULL
                               WHERE UserSession='"
                  .session_id()."'";
                               
                  mysql_query($sql);
                          }


                  function 
                  Hinweis() {
                  var 
                  confirm("Sie sind jetzt schon 10 Minuten auf dieser Seite. Fortfahren?");
                   if(
                  == falsetop.close();
                  }
                  window.setTimeout("Hinweis()",60000);

                  </
                  script>


                  </
                  head>

                  <
                  body topmargin="5" rightmargin="0" class=bgcolor onUnload='javascript:del_session()'

                  Kommentar


                  • #10
                    Ist hier nicht das Problem von Client- bzw. Serverseitig?
                    _____________
                    Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
                    [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

                    Kommentar


                    • #11
                      nein, denke nich.

                      das problem liegt in der if-Abfrage. ich weiss nicht wie ich die sql befehle in js umsetzen kann...

                      Kommentar


                      • #12
                        Original geschrieben von Clubingman
                        nein, denke nich.
                        Denk ich aber doch... Wie willst Du dich mit der DB connecten?

                        weiss nicht wie ich die sql befehle in js umsetzen kann
                        Klar... weil Clientseitig...
                        _____________
                        Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
                        [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

                        Kommentar


                        • #13
                          Original geschrieben von Clubingman
                          nein, denke nich.
                          natürlich ist es das, und sogar noch mehr - nämlich unverständnis der verwendeten techniken beim programmierer.

                          du schreibst PHP-befehle in eine javascript-funktion rein.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            OK, ganz am anfang hab ich ein file includet mit dem ich ein connet zur db hab - is jetzt hier jetzt nich zu sehn.

                            ich möchte mit if erreichen, dass beim schliessen des browsers die UserSession (is die session_id) auf NULL gesetzt wird.

                            wenn also js php so nich direkt unterstüzt, kann ich dann irgendwie auf ein file verweisen in dem dann dieser php-code steht !?

                            sollte doch realisierbar sein oder wie kann ich es denn anders machen !?

                            bin echt dankbar f. jeden vorschlag

                            Kommentar


                            • #15
                              Original geschrieben von Clubingman
                              wenn also js php so nich direkt unterstüzt, kann ich dann irgendwie auf ein file verweisen in dem dann dieser php-code steht !?
                              JS weiterleitung auf php seite, welche die session zerstört...

                              Wieso verzichtest Du nicht auf JS und machst es so wie die andern sagten??

                              Jedoch solltest Du wohl noch die Grundlagen studieren...
                              _____________
                              Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
                              [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

                              Kommentar

                              Lädt...
                              X