-
Hi Domi,
danke für die Info.
Du meintest wohl if()-Schleifen
Ja damit bekommt man es hin das sich nicht mehr wie zum Beispiel 3 User einloggen können.
Nur bei mir ist das Problem das dann alle 3 User die online sind automatisch nach 15 Minuten ausgeloggt werden sollen.
Und diese User natürlich auch eine Benachrichtigung bekommen, dass sie nach einer bestimmten Zeit ausgeloggt werden.
Ich hatte an die flush() Funktion gedacht, nur hinbekommen habe ich es noch nicht.
-
04.08.09 09:09 #17
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Also ich kenne den Aufbau der Tabelle nicht aber wenn du jetzt den Benutzer abmelden willst der bereits am längsten online ist, dann musst du bei der Anmeldung die Uhrzeit/Anmeldezeit mitspeichern.
Beim Logout suchst du dann den Benutzer mit der frühesten Anmeldezeit:
PHP-Code:DELETE FROM users ORDER BY anmeldezeit ASC LIMIT 1
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ich würde am liebsten den User abmelden der bereits am längsten eingeloggt ist.
Dieser soll aber noch die Möglichkeit haben innerhalb eines Zeitfensters von 15 Minuten sich selbst abmelden zu können bzw. wenn er das nicht macht erst dann nach 15 Minuten automatisch ausgeloggt werden.
In meiner Tabelle werden die Einloggzeit, Ausloggzeit, und er UNIX-Timestamp bereits mitgeloggt.
Dann könnte ich ja wie du geschrieben hast den User mit dem frühesten Timestamp suchen und dann sagen die aktuelle Zeit + 15 Minuten dann wird er ausgeloggt.
Oder verstehe ich das falsch?
-
04.08.09 09:34 #19
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Genau so ist es!
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Ok danke.
Dann probiere ich es so.
Jetzt fällt mir noch ein weiteres Problem auf.
Der erste User soll ja so lange eingeloggt bleiben können solangen bis sich erst ein vierter User versucht einzuloggen und erst dann plus 15 Minuten ausgeloggt werden.
Bis jetzt habe ich es so gemacht das bei Aktivität der UNIX-Timestamp aktualisiert wird.
Nur der dürfte dann ja nicht mehr aktualisiert werden sondern es müsste dann da stehen die versuchte einlogg Zeit des vierten Users + 15 Minuten. Das würde dann ja der auslogg Zeit des ersten Users entsprechen.
Nur wie kann ich das am besten machen? Habe da an eine if()-Anweisung gedacht weiß nur nicht wie ich die umsetzen kann.
-
Hi,
ich weiß nicht was ich falsch mache,
aber scheinbar habe ich einen Fehler in den IF-Anweisungen und kann den nicht finden.
Es soll überprüft werden wieviele Leute online sind und wenns mehr als 3 Leute sind soll man zu einer anderen Seite umgeleitet werden.
Nur leider wird man nicht umgeleitet wenn es mehr als 3 Leute sind.
PHP-Code:
$sql = 'SELECT COUNT(`online_user`) as `on` FROM `user` WHERE `online_user` = 1';
if (!$result = mysql_query($sql))
{
print mysql_error();
}
else
{
$row = mysql_fetch_assoc($result);
if ($row['on']<=3)
{
header ("Location: Logedin.php");
}
else
{
header ("Location: Error.php");
}
}
-
08.08.09 12:26 #22
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Versuche es mit:
PHP-Code:IF (mysql_mun_rows($result) >= 3) {
header ("Location: Logedin.php");
}
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Verwende COUNT(*), dass ist immer ein Tacken schneller als das selektieren einer Spalte.
Und für die SQL-Anweisung an sich reicht mysql_fetch_row, was ebenfalls wieder ein Tacken schneller ist und weniger Speicher braucht. Somit kannst du dir das "AS `on`" auch sparen und mySQL wird ebenfalls entlastet.Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
Hi,
sorry das ich nochmal nachfrage,
aber aus irgendwelchen Gründen will es einfach nicht funktionieren.
In der Datenbank wird mir auch angezeigt wieviele User sich eingeloggt habe, also bei dem Status steht dann jeweils eine "1".
Eigentlich sollten ja die ersten 3 User auf die Logedin.php gelangen und die restlichen eine Fehlermeldung bekommen.
Ich habe jetzt es wie folgt umgeändert:
PHP-Code:$sql = 'SELECT COUNT(`online_user`) as `on` FROM `user` WHERE `online_user` = 1';
if (!$result = mysql_query($sql))
{
print mysql_error();
}
else
{
$row = mysql_fetch_assoc($result);
IF (mysql_num_rows($result) <= 3)
{
header ("Location: Logedin.php");
}
else
{
header ("Location: Error.php");
}
}
-
Um einiges "verschlimmbessert":
Nochmals zur Performance: Nun gibt es eine tote Programmzeile!
$row = mysql_fetch_assoc($result);
Und wie viele Zeilen (Antworten) werden dir von SQL geliefert wenn du SELECT COUNT(*) machst? Wenn du jemanden fragst wie viele Pferde auf dem Flur stehen, wie lang ist seine Antwort? 3 Zeilen?
Das was da vorher war, war schon gut.
Verwendest du dazu noch mysql_result($result, 0); dann erhälst du die Anzahl der gefundenen Zeilen sehr schnell! (Quelle)
btw: Mit zusammenkopieren fährt man immer schlecht beim Programmieren.Geändert von ZodiacXP (08.08.09 um 19:16 Uhr)
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
Hi ZodiacXP,
Oh ja das mit der toten Programmzeile ist mir noch dazwischengerutscht.
Nur ich verstehe nicht wieso nicht mit
die Anzahl der Online User gezählt wird.PHP-Code:$sql = 'SELECT COUNT(`online_user`) as `on` FROM `user` WHERE `online_user` = 1';
Was mache ich denn hier falsch?
-
Ist es denn wirklich so, dass dabei die Zahl 0 zurückgegeben wird?
Bitte prüfe das. Wie man an Ergebnisse aus Abfragen dran kommt weist du.
Zur Not hilft dir so etwas wie phpMyAdmin oder ähnliches.Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
Bei mir wird die Zahl 1 zurückgegeben.
Mache ich denn bei der Count Funktion einen Fehler?
-
Hast du schon wieder COUNT(`user_online`) verwendet?
Wir sind jetzt beim dritten mal, wenn auch indirekt, dass ich dir sage: COUNT(*)
Mit dem Link im letzten Zitat sogar vierte mal
Schaue was passiert wenn du COUNT(*) benutzt und vergiss das "AS `on`".
Steht dort die korrekte Anzahl, dann lies diese Seite des Threads nochmal und du hast dein Skript.
Und vergleiche diese Anzahl mit der tatsächlichen. Count lügt erst bei sehr sehr vielen Datensätzen.
Wenn da steht "1" dann ist auch nur eine 1 drin
Geändert von ZodiacXP (08.08.09 um 19:44 Uhr)
Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!
MfG, Zod
__________________
rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)
-
Hi Zodiac,
sorry für den falschen Code.
Hab aus versehen den falsch Code gepostet.
Habe nur Count(*) verwendet.
Den Link hatte ich total übersehen.
Aber jetzt klappt es.
Trotzdem vielen vielen Dank für die Bemühungen.
Ähnliche Themen
-
Jomla - User für internen Bereich anlegen
Von Kalito im Forum Content Management Systeme (CMS)Antworten: 0Letzter Beitrag: 22.12.10, 13:24 -
Problem bei Eigenem Login Bereich zu Typo3 Login bereich
Von Gunah im Forum PHPAntworten: 2Letzter Beitrag: 08.10.07, 11:38 -
User Anzahl ausgabe
Von surffix im Forum Relationale DatenbanksystemeAntworten: 16Letzter Beitrag: 13.07.02, 15:22 -
zeitlich begrenzter Login
Von asmodis! im Forum PHPAntworten: 1Letzter Beitrag: 30.03.02, 21:17



3Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren