MyBB.de Forum

Normale Version: Wer ist online auf "eigener Seite"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
In dem Bereich "Wer ist online?" wird über die "Vollständige Liste" ausgegeben, welcher User sich gerade in welchem Thema befindet.

Ich würde gerne auf einer "Eigenen Seite" die o.a. Funktionsweise nutzen, um danach zu suchen, welcher eingeloggte User sich gerade auf dieser speziellen Seite befindet und das dann auch anzeigen.

Müsste doch prinzipiell machbar sein, oder? Habe mal in der online.php gesucht, bin aber nicht wirklich fündig geworden, wo ermittelt wird, welcher User sich gerade in welchem Thema befindet.

Für einen Tipp wäre ich Euch dankbar. Wink


Edit:
sorry, sehe gerade, dass ich das Thema in die falsche Ecke gestellt habe. Gehört besser unter Anpassungen->Mods und Addons.
(04.09.2008, 11:35)Michael schrieb: [ -> ]Siehe Punkt 5 hier: https://www.mybb.de/forum/thread-20250-p...#pid140833

Das ist nicht mehr aktuell, da ältere Version.
ähm, Danke erst einmal für die Antworten, aber ich steh' auf dem Schlauch. Blush

Die o.a. Links zeigen doch nur, wie man eine "Eigene Seite" in der vollständigen Liste von "Wer ist online" sichtbar macht. Das ist nicht das Problem.

Ich möchte auf der neu erstellten Seite quasi eine separate who is online Ausgabe erzeugen, die aber nur die User zeigt, die sich gerade auf dieser Seite befinden.
Dann musst du die Benutzer aus der Tabelle sessions abrufen. Die aufgerufene Datei wird dort auch gespeichert, so dass sich das relativ einfach realisieren lassen sollte.
ich hatte wohl das kleine Wörtchen relativ überlesen... Blush

Ich erhalte alles mögliche als Ergebnis bzw. mit folgendem Code gar keines mehr
PHP-Code:
    $query $db->query("
        SELECT s.uid, s.location, u.uid, u.username
        FROM "
.TABLE_PREFIX."sessions s
        LEFT JOIN "
.TABLE_PREFIX."users u ON (s.uid=u.uid)
        WHERE s.location = '/testforum/kiste.php*'
        ORDER BY u.username DESC
        LIMIT 0,100
    "
);
    while(
$data $db->fetch_array($query))
    {
        
$username "<a href=\"member.php?action=profile&uid={$data['s.uid']}\">".htmlspecialchars_uni($data['u.username'])."</a>&nbsp;-&nbsp;";
        eval(
"\$usernames .= \"".$templates->get("kiste_user")."\";");
    } 
Wie auch immer, etwas sinnvolles erscheint nicht. Wo habe ich denn da meinen Denkfehler?
Mit dem Aufruf der Seite übergebe ich auch die jeweilige UID des Users und deshalb diese Zeile '/testforum/kiste.php*'.

Zu der Sessions-Tabelle noch eine generelle Verständnisfrage. Muss die nicht irgendwann auch mal wieder leer sein, wenn keine User mehr online sind?


@Thai-Tiger:
das passt schon mit der alten Version. Ich hinke dem Trend noch deutlich hinterher. Wink
(04.09.2008, 22:07)Jockl schrieb: [ -> ]Zu der Sessions-Tabelle noch eine generelle Verständnisfrage. Muss die nicht irgendwann auch mal wieder leer sein, wenn keine User mehr online sind?
Auf den ersten Blick sieht der Query richtig aus. Allerdings solltest du noch eine zeitliche Begrenzung einfügen (z.B. 5 Minuten), denn die session-Tabelle wird nicht geleert, wenn sich ein Benutzer abmeldet. Die Daten werden automatisch nach einem bestimmten Zeitraum (ich glaube es ist 1 Monat) gelöscht.
Mal abgesehen davon, dass ich es leider immer noch nicht hin bekommen habe, die User anzeigen zu lassen, würde das mit der Zeitbegrenzung in etwa so aussehen können?
PHP-Code:
$timestamp time();
    
$query $db->query("
        SELECT s.location, s.time, u.uid, u.username
        FROM "
.TABLE_PREFIX."sessions s
        .......
        LIMIT 0,100
    "
);
    while(
$data $db->fetch_array($query))
    {
        if (
$data['s.time'] - $timestamp <= 60*60*5) {
        
$username "<a href=\"member.php?action=profile.........
        }
    } 
Ich würde das mit in die Datenbankabfrage einfügen, damit du nicht erst alle Ergebnisse erhältst und dann aussortieren musst.
PHP-Code:
$timestamp time() - 60*60*5;
$query $db->query("
    SELECT s.location, s.time, u.uid, u.username
    FROM "
.TABLE_PREFIX."sessions s
    WHERE s.time > 
{$timestamp}
    ...
"
); 
Erst einmal vielen Dank für den Verbesserungsvorschlag! Für so etwas bin ich immer dankbar! Wink

Im Prinzip funktioniert jetzt so weit alles. Im Prinzip will heißen, dass ab und an anscheinend User "verschluckt" werden oder auch noch nach längerer Zeit angezeigt werden, ob wohl sie schon geraume Zeit ausgeloggt sind. Zusammen mit der "Wer ist online?"-Liste kann man sich aber ein ganz gutes Bild machen.
Seiten: 1 2