Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PHP Übersicht der angemeldeten User - wie User-Anzeige löschen beim Verlassen der Seite?

Mitglied: marco1234

marco1234 (Level 1) - Jetzt verbinden

15.07.2010 um 15:50 Uhr, 5536 Aufrufe, 9 Kommentare

echo $freundliche_begruessung;

Ich möchte gerne eine Übersicht der Benutzer, die auf meiner Seite angemeldet sind, erstellen. Das Herausfinden des Users ist ja kein Problem. Jeder User, der sich anmeldet, kann ich ja einfach in eine Datenbank schreiben. Wenn sich der User wieder (korrekt) abmeldet – die Sessions geschlossen wird – könnte ich den User auch wieder löschen. Alles kein Problem!

Nur, was ist, wenn der User das Browser-Fenster einfach schliesst? (Was ja leider oft der Fall ist xD) Dann bleibt mein Eintrag ja in der DB vorhanden. Und mit JavaScript irgendwie abfragen, ob das Fenster geschlossen ist, hilft mir ja auch nicht viel, da ich aus JavaScript keine SQL Abfragen senden kann.
An einen Timer, der den User nach einer gewissen Zeit löscht, habe ich auch schon gedacht. Nur wo soll dieses Script laufen?

Kennt jemand eine Lösung? Wie macht man das sonst so? Es gibt ja viele Seite (hier im Forum ja auch), wo man sieht, wer angemeldet ist.

Danke und Gruss
Marco
Mitglied: godlie
15.07.2010 um 15:54 Uhr
Hallo,

mit AJAX könntest du aus Javascript heraus einen Call auf eine php Datei machen welche dir dann deinen Eintrag aus der DB wieder entfernt.
Aber ich glaube du bist mit dem window_onbeforeunload event eher besser bedient...
Bitte warten ..
Mitglied: marco1234
15.07.2010 um 16:58 Uhr
Ja aber kann ich mit JavaScript dann noch ein PHP-File aufrufen, das ausgeführt wird? :-S
Bitte warten ..
Mitglied: Coder2007
15.07.2010 um 17:50 Uhr
Mach das doch mit Sessions, so lange die Session existiert ist der User online. Wird das Fenster geschlossen wird nach einer gewissen Zeit ja auch die Session beendet. Ich hatte sowas mal irgendwann realisiert, ist aber schon ewig her.

Coder
Bitte warten ..
Mitglied: EvilMoe
15.07.2010 um 18:14 Uhr
Wie du schon sagtest, beim login -> DB schreiben.
Logout -> aus der DB löschen.

Das sollte klar sein. Nun brauchst du eine art "Cronjob". Du musst zusätzlich ein "Timestamp" speichern wann der User die letzte Seite geladen hat. Diese bei jedem Seitenaufruf aktualisieren.
Wenn die Zeit größer ist als z.B. 2min kann man davon ausgehen das er nicht mehr online ist -> aus der DB löschen.

Den Cron dann z.B. jede Minute einmal aufrufen lassen.
Oder einfach bei jedem Seitenaufruf, so intensiv ist das SQL Statement nun auch nicht ;)
Bitte warten ..
Mitglied: dog
15.07.2010 um 19:31 Uhr
Wo ist das Problem?
Du fügt in der DB einen Timestamp last_seen hinzu und suchst dann bei den angemeldeten usern nach WHERE last_seen > (NOW() - 5)
Den Timestamp aktualisierst du bei jedem Seitenaufruf.

Viel mehr lässt sich eigentlich darüber streiten ob es Sinn macht hierfür extra einen Haufen aufwändiger DB-Abfragen zu stellen...
Bitte warten ..
Mitglied: marco1234
16.07.2010 um 09:03 Uhr
Hallo zusammen

Vielen Dank für eure Antworten. Sind alles gute Ideen. Aber das Problem ist somit nicht ganze gelöst. Ich kann schon ein Job laufen lassen, der alle 2min den User löscht. Aber woher weiss ich, dass dieser User jetzt wirklich nicht mehr auf der Seite ist?

Immer die aktuelle Zeit eintragen, wenn der User die Seite wechselt geht nicht gut, da ich genau eine Datei habe und alles weitere hineingeladen wird. Dann müsste ich ja hinter jedem Button und jedem Link eine SQL Abfrage einrichten, welche die Zeit verlängert… sehr umständlich… :-S

Geht’s nicht einfacher?

@dog
Wie würdest du es machen? Mir fällt ausser DB eigentlich nichts sinnvolles ein…

Gruss
Marco
Bitte warten ..
Mitglied: godlie
16.07.2010 um 13:33 Uhr
Hallo ja das kannst du mit AJAX realisieren.
Einfach ein wenig googeln stichwort jquery oder scriptacolous
Bitte warten ..
Mitglied: EvilMoe
16.07.2010 um 15:57 Uhr
Warum für jede Seite ein SQL abfrage? Du sagst doch eben selber das du eine Datei hast und den rest "includest". Dann brauchst du nur in der einen Datei den SQL Befehl eintragen, mehr nicht.
Der SQL Befehl wird nichtmal eine Millisekunde dauern, das sollte nicht das Problem sein.

Umständlich ist das rein garnicht. Kinderkram ist das, du machst es dir nur einfach zu schwierig.
Man könnte es noch mit JavaScript kombinieren, aber nicht jeder hat es aktiviert.
Bitte warten ..
Mitglied: marco1234
06.09.2010 um 16:50 Uhr
Hab’s jetzt so gelöst:

Wenn ein User sich anmeldet, wird sein Benutzername und die Zeit in die DB eingetragen. Wenn er sich korrekt via Logout abmeldet, wird er aus der DB gelöscht.

Jedes mal, wenn ein User die Seite öffnet, werden alle User aus der DB abgerufen und es wird überprüft, ob die letzte Aktivität älter als 20min ist. Wenn ja, wird dieser User gelöscht bzw. abgemeldet.

Die Zeit des entsprechenden Users wird bei jeder Aktualisierung der Seite (POST etc.) aktualisiert. Somit aktualisiert der User beim Benützen der Seite immer seine Lifetime.

Lg
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk

Übersicht User + GPOs nach Netzübernahme

Frage von kazesanWindows Netzwerk2 Kommentare

Hallo zusammen, ich wühle mich momentan durch die Domäne eines neuen Kunden welche eine ziemlich schwierige Trennung von einer ...

Windows Userverwaltung

Abfrage welche User sich auf welchen Geräten angemeldet haben

Frage von oerdoerdWindows Userverwaltung3 Kommentare

Moin, gibt es eine Möglichkeit, im Idealfall per Powershell, abzufragen welcher User sich auf welchem Gerät angemeldet hat? Ich ...

Windows Userverwaltung

Welcher User ist an welchem Client angemeldet

gelöst Frage von BlueShadow9Windows Userverwaltung8 Kommentare

Hallo allerseits, dies ist mein erster Beitrag hier und ich sage gleich vorweg, dass ich nicht der grosse Crack ...

Windows 7

Welcher User war wann angemeldet Win7

gelöst Frage von MarcysWindows 78 Kommentare

Hallo zusammen, ich habe die Vermutung, dass ein Kollege das Domänen Admin Passwort kennt, da Änderungen an seinem PC ...

Neue Wissensbeiträge
iOS
IOS 11.2.6 verfügbar
Information von sabines vor 2 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 16 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server38 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless15 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...