Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Suche einen Lösungstipp ohne Code

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Suche einen Lösungstipp ohne Code

    Guten Morgen Zusammen,

    ich habe auf meiner PHP-Seite eine Benutzer Anmeldung gebastelt, es wird immer mit SESSIONS gearbeitet und bei erfolgreicher Anmeldung eine log.txt erstellt. Solange diese Datei exisistiert darf sich keiner weiterer anmelden.

    Beim Logout wird diese gelöscht, doch nicht jeder loggt sich immer richtig aus, somit besteht die Datei noch immer und niemand kann sich anmelden.

    Ich dachte gut mache ich auf meinem linux system ein script was alle 15min diese datei löscht, doch weiß ich nicht wie ich es somache das diese 15min erst ab erstellung der datei gezählt wird. So wie ich es zum testen hatte, kann es sein das sich jemand anmelden und dann nach einer minute sind im system 15min um und die datei wird gelöscht, irgendwie doof

    Ich hätte gerne kleine unterstüzung, ich komme da noch nicht weiter, mein nächster ansatz wäre, die SESSIONS laufen nach bestimmter zeit ab, kann ich darüber irgendwie die datei löschen lassen? Nur wie?

    Bin ein anfänger hoffe mir kann jemand seien erfahrungen mitteilen, Gruß Alecane

  • #2
    Du solltest der Datei so gesehen ein Timeout geben. Speicher zum Beispiel den Timestamp in der Datei. Bei jedem neuen Aufruf der Seite wird immer der aktuelle Timestamp in die Datei gespeichert.

    Verlässt der aktuelle User jetzt die Seite dann bleibt die Datei bestehen. Kommt jetzt ein neuer Besucher prüft er ob die Datei existiert:
    -> wenn nicht kann er sich einloggen
    wenn ja dann sollte er sich den Timestamp anschauen:
    -> ist er länger als 15 Minuten her? Dann darf er sich einloggen und den Timestamp neu setzen
    wenn nicht dann darf er sich noch nicht einloggen

    Kommentar


    • #3
      [MAN]filemtime[/MAN]

      Bei jeden Auruf der Seite überprüfen ob es schon 15 Minuten her ist.

      Kommentar


      • #4
        Timestamp in die Datei, daran habe ich gar nicht gedacht, klingt echt interessant, dass werd ich mal versuchen.

        Zitat von Yoshi- Beitrag anzeigen
        [MAN]filemtime[/MAN]

        Bei jeden Auruf der Seite überprüfen ob es schon 15 Minuten her ist.
        Geht das nicht auch mit SESSIONS? Prüfen wie lange eine SESSION schon inaktiv ist?

        Danke Schön

        Kommentar


        • #5
          Was soll den prüfen ob die Session noch aktiv hast? Wenn niemand ein PHP Skript aufruft kannst du auch nicht prüfen ob die Session noch aktiv ist.

          Kommentar


          • #6
            Stimmt, nagut ich werd mich mal daran setzen, danke nochmals.

            Kommentar


            • #7
              Was ist denn wenn sich jemand länger als 15 Minuten auf deiner Seite aufhalten möchte?

              Da würde die Überprüfung des Timestamps der Datei, die nur beim Login erzeugt wurde, fehlschlagen...
              Selbst im Rollstuhl kann man die Menschenrechte mit Füßen treten.
              Die Politik darf kein hirnfreier Raum sein.

              Kommentar


              • #8
                Zitat von redox Beitrag anzeigen
                Was ist denn wenn sich jemand länger als 15 Minuten auf deiner Seite aufhalten möchte?

                Da würde die Überprüfung des Timestamps der Datei, die nur beim Login erzeugt wurde, fehlschlagen...
                Ja ich kann ja beides machen

                1) Bei jedem aufruf einer seite wird geprüft ob die log.txt älter als 15 min ist, wenn ja kommt der nächste schritt.
                2) Es wird geprüft ob die session['benutzer'] schon länger als 15min inaktiv ist.

                Ist das Schwachsinn oder sollte es Funktionieren

                Wie kann ich eine Session erneuern? Also sobald jemand auf meinen Seiten herumklickt soll die Session['benutzer'] erneuert werden, sonst funktioniert es auch nicht.

                Gruß Alecane

                Kommentar


                • #9
                  Du kannst nicht auf die Sessions von anderen Usern zugreifen! Speicher einfach bei jedem Seitenaufruf in der Textdatei den aktuellen Timestamp + den User der aktuell eingeloggt ist. Somit bleibt die Datei immer aktuell solang der User surft, sollte er dann 15 Minuten nicht online sein kann sich wieder ein anderer einloggen weil er sieht das die Datei 15min nicht mehr verändert wurde (also der Timestamp in der Datei).

                  Der Benutzer muss natürlich auch in der Datei gespeichert werden damit derjenige der gerade surft nicht von seiner eigenen Sperre ausgesperrt wird.

                  Kommentar


                  • #10
                    Zitat von Flor1an Beitrag anzeigen
                    Du kannst nicht auf die Sessions von anderen Usern zugreifen! Speicher einfach bei jedem Seitenaufruf in der Textdatei den aktuellen Timestamp + den User der aktuell eingeloggt ist. Somit bleibt die Datei immer aktuell solang der User surft, sollte er dann 15 Minuten nicht online sein kann sich wieder ein anderer einloggen weil er sieht das die Datei 15min nicht mehr verändert wurde (also der Timestamp in der Datei).

                    Der Benutzer muss natürlich auch in der Datei gespeichert werden damit derjenige der gerade surft nicht von seiner eigenen Sperre ausgesperrt wird.
                    Ja der benutzer ist schon immer in der datei eingetragen, aber ja danke für diesen super tip

                    Jetzt sollte alles klappen, so einfach kanns sein.

                    Kommentar


                    • #11
                      Habe mir alles zusammen gebastelt, jetzt klappt es so wie es sollte, wenn der angemeldete benutzer 15min keien seite mehr aufruft, wird dieser automatisch ausgeloggt.

                      ich habe es so das nur immer ein admin auf die seiten zugreifen darf, das ist absicht. Es wird geprüft ob die log.txt existiert, wenn nein muss man sich anmelden, wenn ja dann wird geprüft wie lange der zeit unterschied ist zur jetzigen. wenn es auch über 15min wird der alte admin vom system ausgellogt und der neue kann sich anmelden, das passiert im hintergrund bei der anmeldung.

                      Dies funktioniert dank euch auch Perfekt, doch wenn diese zeit noch nicht abegelaufen ist, könnte es sein das der admin ja trozdem noch aktiv ist, dann wird geprüft ob der benutezr in der log.txt der selbe wie in der $_SESSION['benutzer'] ist, wenn ja darf er die seite sehen, wenn nein wird eien fehlermeldung erscheinen, soweit so gut.

                      Doch habe ich jetzt bedenken, das sich ein admin anmeldet und großen einträge einfügt das vielleicht einfach mal 45min dauert, durch meine oprogrammierung wird dieser nicht ausgeloggt, es sei den die SESSION Variable benutzer wird vom system zerstört oder geändert. Gibt es einen befehl wie ich diese SESSION Variable imemr aktuell halten kann solange der benutzer auf den seiten rum klickt?

                      FRAGE: Wie erneuere/aktualisiere ich eine SESSION Variable, damit diese nicht nach gewisserzeit zerstört wird?

                      Gruß Alecane, hoffe ihr versteht meien Frage

                      Kommentar


                      • #12
                        Zitat von Alecane Beitrag anzeigen
                        FRAGE: Wie erneuere/aktualisiere ich eine SESSION Variable, damit diese nicht nach gewisserzeit zerstört wird?
                        Indem du bei jedem Aufruf die aktuelle Zeit reinschreibst. Ich denke, das hast du bereits so umgesetzt?

                        Kommentar


                        • #13
                          Zitat von hpf Beitrag anzeigen
                          Indem du bei jedem Aufruf die aktuelle Zeit reinschreibst. Ich denke, das hast du bereits so umgesetzt?
                          Ja also mein Timestamp schreibe ich in die Datei log.txt, aber bei der anmeldung erstelle ich eine $_SESSION['benutzer'] in der der Benutzer drinn steht.

                          Jetzt fällt mir gerade selbst ein wie, kann ich nicht einfach bei jedem aufruf einer Seite die Variable wieder wie die alte Setzten

                          PHP-Code:
                          $_SESSION['benutzer']=$_SESSION['benutzer']; 
                          Somit sollte die ja neu sein und wird nicht nach gewisser zeit zerstört.

                          Gruß Alecane

                          Kommentar


                          • #14
                            Zitat von Alecane Beitrag anzeigen
                            PHP-Code:
                            $_SESSION['benutzer']=$_SESSION['benutzer']; 
                            Somit sollte die ja neu sein und wird nicht nach gewisser zeit zerstört.
                            So ein Quatsch ...

                            Ob Session-Dateien vom garbage collector weggeräumt werden dürfen, hängt vom Zeitpunkt des letzten Zugriffs auf die Datei ab.

                            Und dieser Zugriff passiert automatisch, wenn session_start aufgerufen wird.
                            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                            Kommentar


                            • #15
                              Achso, stimmt.

                              Die Session wird automatisch aktualisiert, wenn die Seite aufgerufen wird. Was soll das bringen, immer wieder den Benutzer reinzuschreiben?

                              Kommentar

                              Lädt...
                              X