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, 11: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, 11:44
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
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 11:48 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 28-04-2013, 12: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, 12: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, 12:29
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
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 12:32 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 28-04-2013, 12: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, 12: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, 14: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, 14: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, 14: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 14:56 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 28-04-2013, 16: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 22:06
icq online status devil2501 Apps und PHP Script Gesuche 3 26-12-2006 17:44
Online Status BadSniper PHP Developer Forum 4 25-01-2005 16:08
Online / Offline Status... CarpeDiem PHP Developer Forum 5 22-07-2002 12:35
Online Status sparky PHP Developer Forum 4 15-08-2001 22: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

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:42 Uhr.