php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-04-2013, 10:31
ugenmeister
 Registrierter Benutzer
Links : Onlinestatus : ugenmeister ist offline
Registriert seit: Apr 2012
Beiträge: 40
ugenmeister befindet sich auf einem aufstrebenden Ast
Standard Online-Status USER automatisch ändern

Hallo Zusammen.

Ich bräuchte mal bitte ein paar hilfreiche Gedanken.

Der User loggt sich ein und in einer MySQL wird IP und Timestamp gespeichert. Zusätzlich bekommt das Feld ONLINESTATUS eine 1 (= online; 0 = offline). Loggt er sich wieder "richtig" aus, bekommt das Feld ONLINESTATUS die 0 gesetzt.

Aber - schließt er einfach den Browser OHNE Logout bleibt er weiter als ONLINE gespeichert, was bis hierher ja auch logisch ist. Wie kann ich das abfangen?

Danke!

UWE
Mit Zitat antworten
  #2 (permalink)  
Alt 28-04-2013, 10:44
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Die Spalte ONLINESTATUS ist unnötig und solltest du komplett weg lassen. Es reicht der Timestamp. Wenn der User eine Aktion auf der Seite tätigt, dann setze den Timestamp auf den aktuellen Zeitpunkt. Wenn sich der User ausloggt, dann setze ihn auf NULL.

Eine Person ist "online", wenn der Timestamp nicht NULL und größer als aktueller Zeitpunkt minus <festgelegte Zeitdauer> ist. Ansonsten ist er "offline".

Geändert von h3ll (28-04-2013 um 10:48 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 28-04-2013, 11:03
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

*edit, wg. sorry falsch hier*
__________________
Wir werden alle sterben
Mit Zitat antworten
  #4 (permalink)  
Alt 28-04-2013, 11:12
ugenmeister
 Registrierter Benutzer
Links : Onlinestatus : ugenmeister ist offline
Registriert seit: Apr 2012
Beiträge: 40
ugenmeister befindet sich auf einem aufstrebenden Ast
Standard

Danke für die prompte Antwort.
Wie ermittle ich "eine Aktion des Users" auf der Seite?

Zitat:
Wenn sich der User ausloggt, dann setze ihn auf NULL.
Das versteh´ ich. Aber wie fange ich das ab wenn er sich NICHT ausloggt und einfach die Website wechselt oder den Browser schließt?

DANKE!
Mit Zitat antworten
  #5 (permalink)  
Alt 28-04-2013, 11:29
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ugenmeister Beitrag anzeigen
Danke für die prompte Antwort.
Wie ermittle ich "eine Aktion des Users" auf der Seite?
Da gibts nichts zu ermitteln. Jedesmal, wenn ein Request von einem User kommt, setzt du den Timestamp. Der Request kommt zu dir und nicht du zum Request

Zitat:
Zitat von ugenmeister Beitrag anzeigen
Das versteh´ ich. Aber wie fange ich das ab wenn er sich NICHT ausloggt und einfach die Website wechselt oder den Browser schließt?
Deswegen eine festgelegte Zeitdauer. Also angenommen der User hat in den letzten 10 Minuten nichts gemacht, dann kannst du davon ausgehen, dass der User entweder das Fenster gewechselt, seinen Platz verlassen oder den Browser geschlossen hat. Damit kriegst du zumindest schon mal einen annähernd brauchbaren Status zusammen.

Wenn das mal läuft, könnte man das ganze noch verfeinern. zB. könntest du per AJAX alle 10 Minuten einen Ping an dein Skript schicken, damit es weiß, dass der User die Seite noch offen hat, auch wenn er eine längere Zeit nichts aktiv auf der Seite macht (falls das so gewünscht ist).

Einen richtigen Online-Status, der 100% korrekt ist, kriegst du über einen Webbrowser aber nicht hin. Das ist praktisch unmöglich, da es viele Faktoren gibt, die man nicht beeinflussen oder berücksichtigen kann.

Geändert von h3ll (28-04-2013 um 11:32 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 28-04-2013, 11:41
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Einen richtigen Online-Status, der 100% korrekt ist, kriegst du über einen Webbrowser aber nicht hin. Das ist praktisch unmöglich, da es viele Faktoren gibt, die man nicht beeinflussen oder berücksichtigen kann.
So ist es.
Das HTTP ist ein Status loses Protokoll.

Und deswegen machts die eingebaute Sessionverwaltung quasi genau so.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 28-04-2013, 11:42
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ugenmeister Beitrag anzeigen
Wie kann ich das abfangen?
Wie h3ll bereits schrieb, durch eine festgelegte Zeitdauer. Bei einer Bankverbindung sehe ich zum Beispiel die Uhr mitlaufen. Tue ich nichts in der angegebenen Zeit, wird die Sitzung automatisch beendet.

Allerdings und das betrifft wohl mehr Deine Frage, wenn ich den Browser schließe, wird nicht nur die Sitzung beendet, sondern dem Server die Beendigung auch mitgeteilt. Somit könnte es die Seite sein, die da einen Ping vor dem Schließen sendet oder fortlaufend im Sekundentakt. Doch das weiß ich jetzt gerade auch nicht so genau, wie das abläuft.
Mit Zitat antworten
  #8 (permalink)  
Alt 28-04-2013, 13:21
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Allerdings und das betrifft wohl mehr Deine Frage, wenn ich den Browser schließe, wird nicht nur die Sitzung beendet, sondern dem Server die Beendigung auch mitgeteilt. Somit könnte es die Seite sein, die da einen Ping vor dem Schließen sendet oder fortlaufend im Sekundentakt. Doch das weiß ich jetzt gerade auch nicht so genau, wie das abläuft.
Nöö...
PHP bekommt vom schließen des Browser nix mit, es sei denn, das Script läuft gerade.
Ein Abbruch der Verbindung wg. Netzwerk- Stromausfall usw. bleiben gänzlich unsichtbar.

Einiger Weg das zu erkennen: ein Ajax Heartbeat.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 28-04-2013, 13:26
ugenmeister
 Registrierter Benutzer
Links : Onlinestatus : ugenmeister ist offline
Registriert seit: Apr 2012
Beiträge: 40
ugenmeister befindet sich auf einem aufstrebenden Ast
Standard

Ich danke euch für die regen und brauchbaren Antworten!
Den theoretischen Teil kann ich daraus nun verstehen, was mir schon sehr weiterhilft. Was ich noch nicht verstehe ist, wie und wo ich es per Code umsetzen kann.

z.B. wie frage ich diesen Request ab damit ich erkenne ob der User die letzten 10 Min. etwas gemacht hat auf der Seite oder nicht?

... wenn die Sitzung dann - nach 10 Min. - autom. beendet wird, dann muss doch bei diesem User der Timestamp in der MySQL wieder gelöscht werden oder? Ich weiß wie ich das Feld in der DB auf null setze, aber wie und wo kann ich das machen dass es "automatisch" passiert?

... und das Ganze muss ja dann auch bei mehreren verschiedenen Usern passeren. Wie bekomme ich die Zuordnung der einzelnen Online-Usern hin? Jeder User ist ja ein eigener Datensatz in der DB.
Mit Zitat antworten
  #10 (permalink)  
Alt 28-04-2013, 13:53
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Nix löschen!
Wozu auch?

User Online Anzeige - PHP Forum: phpforum.de
__________________
Wir werden alle sterben

Geändert von combie (28-04-2013 um 13:56 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 28-04-2013, 15:28
ugenmeister
 Registrierter Benutzer
Links : Onlinestatus : ugenmeister ist offline
Registriert seit: Apr 2012
Beiträge: 40
ugenmeister befindet sich auf einem aufstrebenden Ast
Standard

Wow - Danke combie. Das sieht doch schon ganz toll aus und hilft mir das Ganze besser zu verstehen.
Ich weiß dass es sich nicht gehört hier über Scripts/Beiträge von einer anderen Site zu diskutieren. Aber vielleicht kann ich doch eine Frage dazu stellen...


Wo und an welcher Stelle muss dieser Code stehen?
PHP-Code:
if(!empty($_SESSION['userid']))
{
$sql " UPDATE `users`
SET `last_hit` = NOW()
WHERE `user_id` = "
.$_SESSION['userid'];
mysql_query($sql);

Liege ich richtig wenn ich behaupte, dass dieser Code auf jeder Seite ganz am Anfang stehen muss?

Und wie kann ich es realisieren dass bei jedem User unter seinem Foto ONLINE erscheint (als Text oder Grafik)? Ich möchte keinen Code haben; ein Hinweis auf die Vorgehensweise reicht mir schon.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
User Online Status Seikilos PHP Developer Forum 17 16-12-2008 21:06
icq online status devil2501 Apps und PHP Script Gesuche 3 26-12-2006 16:44
Online Status BadSniper PHP Developer Forum 4 25-01-2005 15:08
Online / Offline Status... CarpeDiem PHP Developer Forum 5 22-07-2002 11:35
Online Status sparky PHP Developer Forum 4 15-08-2001 21:31

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:06 Uhr.