Login-Script + Userstatus ändern

Caralynn

Mitglied
Hallöchen,
da ich noch ein ziemlicher Newbee in Sachen PHP bin, bräuchte ich eine kleine Hilfestellung bei einem Login-Script. - Die Suche habe ich bereits auch zur Hilfe gezogen, sie konnte mir keinerlei Antworten auf meine folgende Frage geben.

Ich arbeite mit Sessions und mit Cookies (für das Design der Seite -> Skins), die Session wird mittels session_start(); in der login.php gestartet. Alles funktioniert auch ganz wunderbar, der Login funktioniert mit beiden Testbenutzern, aber ich möchte jetzt noch gerne zeigen, welcher User gerade online ist, d.h. eingeloggt.
Dafür habe ich eine Zeile in der Tabelle users angelegt, die ich status genannt habe - '0' soll für offline stehen, '1' für online (logisch, nicht wahr -.-)
Allerdings hänge ich jetzt wohl gedanklich. Wie schaffe ich es, dass der status des Users bei erfolgreichen Login auf '1' gesetzt wird? .oO(Höchstwahrscheinlich über ein INSERT INTO, hm... aber an welcher Stelle?)
Als Grundlage habe ich das Login-Tutorial von Karl Förster genommen, der PHP-Code blieb im Wesentlichen unverändert; lediglich bei der Formular-Datei habe ich

PHP:
<? include("cookiecheck.php"); ?>
<? include($headervar.$skin.$extension); ?>

ganz am Anfang hinzugefügt und den gesamten Login etwas mit CSS aufgepeppt :)
[zur intern.php datei bin ich noch nicht gekommen ... *dudelpfeiff* und muss man eigentlich immer ein neues <? xxx ?> machen, glaub nicht... *codeverwurschtel?*]

Wäre wirklich sehr dankbar, falls einer von den PHP-Göttern sich dazu bereit erklären würde, mir ein wenig zu helfen :)

Hoffend auf Hilfe,
Caralynn
 
Also das Problem mit deiner MySQL Tabelle sollte sich wie folgt lösen lassen:

$sql = "UPDATE users SET status = 1 WHERE spaltenname = 'x' LIMIT 1";
$result = mysql_query($sql,$conn);

$conn soll dabei deine Verbindung zur Datenbank sein, und für das spaltenname = 'x' musste halt Name oder ID oder was auch immer einsetzen damit der richtige User upgedatet wird.
 
Dankeschön, das scheint schon einmal zu funktionieren :)
Nun stellt sich mir allerdings die Frage, wie ich das ganze in der Logout.php wieder rückgängig mache. Den gleichen Code, nur mit den entsprechenden Variablen? *grübel* - das scheint allerdings nicht zu funktionieren, weshalb es wohl nicht stimmen kann.
 
So müsste es aber eigentlich gehen. Einfach genau den selben Code verwenden und status = 0 eintippen.

$sql = "UPDATE users SET status = 0 WHERE spaltenname = 'x' LIMIT 1";
$result = mysql_query($sql,$conn);

Allerdings musst du damit rechnen das man manchmal vergisst sich auszuloggen, und dann bis zum nächsten mal ein- und wieder ausloggen
als online in der Tabelle steht, desshalb wäre es gut noch die Zeit zu der
der User online war einzutragen, etwa so:

In der Tabelle ein neues Feld namens "Timestamp" vom Typ UNSIGNED INT
anlegen und dann folgenden Code beim Login benutzen:

$sql = "UPDATE users SET status = 1, Timestamp = " . time() . " WHERE Spaltenname = 'x' LIMIT 1";
$result = mysql_query($sql,$conn);
 
Die klassischen Scripts für die UserOnline-Anzeige funktionieren da etwas anders:

Du hast auch die Möglichkeit eine extra Tabelle zu benutzen. In dieser Tabelle speicherst du folgende Daten: ID des Benutzers, Uhrzeit, IP.
In jeder Datei fügst du oben einen Code ein, der alle Datensätze aus der Tabelle löscht, die länger als eine bestimmte Zeit zurückliegen und auch den, der die ID des aktuellen Benutzers trägt. Danach schreibst du einen neuen Datensatz rein mit der ID des aktuellen Benutzers, der aktuellen Uhrzeit und der IP.
Um zu sehen wer online ist musst du einfach nur die ganze Tabelle auslesen... und die Anzahl der Datensätze bedeutet auch gleich die Anzahl der Benutzer. Mit etwas Abwandlung funktioniert das ganze dann auch für Besucher, also Benutzer, die keinen Login haben.

Musst mal schauen ... hier war auch irgendwo ein Tutorial zu dem Thema UserOnline. Musst du mal in der Tutorial-Section und dann unter PHP schauen.
 
Zurück