Login-Bereich mit begrenzter User Anzahl

as333

Erfahrenes Mitglied
Hi,

ich habe ein Login-Script mit Session und einer Anbindung einer MySQL Datenbank programmiert.
Die User können sich neu registrieren und anschließend nach Aktivierung durch einen Admin können sie sozusagen den Login geschützten Bereich betreten.
Jetzt soll es aber so sein das sich nur maximal 3 User gleichzeitig einloggen dürfen und wenn dann ein weiterer User versucht sich einzuloggen soll diesem angezeigt werden das User bereits eingeloggt sind und er es später nochmals versuchen soll.
Die eingeloggten User sollen dann angezeigt bekommen das sich ein weiterer User einloggen möchte und sie in zum Beispiel 10 Minuten automatisch ausgeloggt werden damit sich der weitere User einloggen kann.

Kann mir hierbei einer helfen bzw. sagen wie man sowas am besten realisiert?
Mit PHP und MySQL kenn ich mich relativ gut aus.

Oder weiß vielleicht jemand ob es zB mit Perl, Java oder ähnlichem leichter geht?
 
Denkanstoß.

Speicher in einer MySQL-Tabelle wer seit wann online ist. Da kannst du ja dann direkt prüfen wie viele Online sind und entsprechend der Onlinezeit reagieren.

warum auch immer man nur 3 User online haben will....
 
Hi CookieBuster,

ich lasse bei jedem login den unix timestamp, time(), mit eintragen.
das funktioniert schon.
nur dann können sich immer noch x-beliebige user einloggen.

die 3 user war nur ein beispiel, ich möchte nur das sich nicht mehr als eine vordefinierte anzahl von usern gleichzeitig einloggen können.
und das krieg ich nicht hin.
 
Mach z.B. eine eigene Online-Tabelle. Dann kann man da direkt prüfen wer online ist. (Müssen halt immer die alten gelöscht werden, welche nicht mehr online sind)

Das ganze ist nah verwandt mit dem Thema, "Wer ist aktuell Online" und dergleichen.
Mehr als eine einfache If-Bedinung nach einem SQL-Statement ist das nicht.
 
Einfach per
PHP:
<?php
$sql = "SELECT COUNT(*) FROM online_user";
?>
die Anzahl der online User ermitteln und entsprechend reagieren...
 
hi,
super vielen dank.
Klappt soweit.
Jetzt muss ich es nur noch schaffen das wenn z.B. die 3 User eingeloggt sind sie eine benachrichtigung bekommen das sich ein neuer einloggen will und sie automatisch nach einer bestimmt vordefinierten zeit automatisch ausgeloggt werden.

Denke das klappt wenn ich ein weiteres Feld in meiner SQL-Tabelle hinzufüge und das dann irgendwie mit einer if Schleife verbinde.

Vielleicht hat ja auch noch jemand von euch eine Idee.

Muss wirklich sagen ist ein super Forum hier.
Und wie schnell man antworten bekommt.
Einfach nur perfekt. ;)
 
Hi CookieBuster,

soll eine komplett neue Tabelle in der Datenbank angelegt werden in die alle User reingeschrieben werden die Online sind oder reicht es wenn ich ein neues Feld in die bestehende Tabelle hinzufüge die ich mit Hilfe von UPDATE aktuell halte. Sprich wenn jemand online geht das dann dort zum Beispiel eine 1 steht und wenn er offline ist eine 0 steht.
 
Um zu unterscheiden wer online ist und wer nicht bzw. um die Anzahl deren zu ermitteln, reicht es aus wenn du ein zusätzliches Feld in die vorhandene Tabelle aufnimmst.

Aber mal abgesehen davon läuft hier nicht was doppelt? Dieser Beitrag von dir ist auch noch offen und da geht es doch um das Gleiche
 
Hallo tombe,

danke für die Info. Hab es versucht mit einem neuen Feld,
nur leider wird bei mir nicht gezählt wieviele User online sind.
Hab es so versucht wie Duxias es vorgeschlagen hat.

PHP:
<?php
$sql = "SELECT COUNT(*) FROM online_user";
?>


Meine MySQL-Tabelle heißt user und das Feld was ich angelegt habe online_user.
Wenn sich jetzt 2 User einloggen erscheint bei beiden die Einloggzeit jedoch wird nicht hochgezählt wieviele User online sind.

Ja der Beitrag ist auch von mir.
Es geht um etwas ähnliches.
Ich wollte keine Verwirrung hervorrrufen deswegen der andere zusätzlich Beitrag.
Bei hier dem Beitrag sollen ja eine bestimmte Anzahl von Usern sich in der Memeberarea gleichzeitig befinden dürfen bei dem anderen Beitrag soll eine richtige Warteschleife realisiert werden.
Diese Vorhaben ist leider auch noch nicht endgültig bearbeitet, sobald es aber fertig ist markiere ich es als erledigt.
 
Das liegt am MySQLBefehl.

Select COUNT(*) zählt natürlich alles. Beschränke es auch mit WHERE auf die Richtigen Zeilen

SELECT COUNT('online_user') WHERE online_user = 1

oder so ähnlich.
 
Zuletzt bearbeitet:
Zurück