Prüfen ob Webseite in mehreren Fenstern / Tabs geöffnet ist

ThiKool

Erfahrenes Mitglied
Hallo Leute,

ich programmiere derzeit ein Tool, welches nicht paralell mit dem selben User unter verschieden Fenstern / Tabs des selben oder eines anderen Browsers aufgerufen werden darf.

http://web.whatsapp.com macht das z.B. genau so wie ich mir das vorstelle.

Mit den verschiedenen Browsern ists ja nicht so kompliziert, aber wie verhält sich das mit verschiedenen Tabs / Fenstern auf dem selben Computer mit selben Browser?

Leider habe ich aktuell keinen Ansazu im Netz dazu gefunden - vielleicht könnt ihr mir auf die Sprünge helfen?

Danke euch :)
 
100% wirst Du das nicht unterbinden können.

Die "User" sind nicht registriert? Vielleicht lässt sich da was mit Sessions basteln... als Ansatz.
 
Nein:
Wenn der User mein Tool gleichzeitig in zwei Fenster / Tabs geöffnet hat, soll es nur in einem Tab laufen, im anderen Tab erscheint eine Fehlermeldung "Die Anwendung läuft bereits in einem anderen Browserfenster"
 
Ok deinen Link muss ich mir mal genau ansehen.

Bei Sessions wüsste ich nicht das man dort einen Unterschied bemerkt wenn der selbe user den selben Link im selben Browser auf dem selben PC in einem anderen Tab öffnet - das wäre natürlich super, wenn sich das feststellen liese
 
Quick and dirty... Als Ansatz.
PHP:
session_start();

if (session_is_registered('lookinguser'))
{
  if ($_SESSION['lookinguser'] == 'on')
  {
     $ausgabe = 'Das Tool läuft schon...'; // oder echo, array...
  }
}
  else
{
  $_SESSION['lookinguser'] = 'on';
}

Dann mit JS oder so... immer wieder prüfen.
 
Hmm aber wenn der User im optimalfall nur ein Tab offen hat und die Seite wechselt oder neu läd enthält die Session ja schon "on" und würde zur Fehlermeldung führen?!
 
Google mal nach "PHP Session Timeout"...

Du musst es nicht unbedingt mit Session machen. Es würde auch z.B. mit der Datenbank funktionieren.

User loggt sich ein und drückt z.B. auf "Spielen"... Nun wird in der DB "ThiKool" auf "is playing" mit einem Timestamp gesetzt. Dieser Eintrag "is playing" wird alle X Sekunden/Minuten erneuert. Mit einem weiteren Skript (z.B. PHP) gehtst Du die DB nach durch, der Einträge sucht die älter als X Sekunden/Minuten ist. Alles was z.B. älter als 1 Minute ist, wird gelöscht oder auf "is offline" gesetzt.

Wie stark ist der Server? Wieviele "Spieler spielen" (bzw. benutzen das Tool) gleichzeitig? Es gibt viele Möglichkeiten...
 
Zurück