WER ist online ?

humsdigga

Mitglied
Hallo, ich möchte gerne auf meiner Homepage einbauen lassen, WER ( NUR von den usern, die regristriert sind) online ist.

habe da mal beim googlen dies hier gefunden

PHP:
<?php
    $sql = "SELECT
                COUNT(*) as Anzahl
            FROM
                Online
            WHERE
                IP = '".$_SERVER['REMOTE_ADDR']."'";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);
    if($row['Anzahl']) {
        // Nur Datum Updaten
        $sql = "UPDATE
                    Online
                SET
                    Datum = NOW()
                WHERE
                    IP = '".$_SERVER['REMOTE_ADDR']."'";
        mysql_query($sql) OR die(mysql_error());
    } else {
        // Neuer eintra
        $sql = "INSERT INTO Online
                    (IP, Datum)
                VALUES
                    ('".$_SERVER['REMOTE_ADDR']."', NOW())";
        mysql_query($sql) OR die(mysql_error());
    }

    // alte Datensätze löschen
    $sql = "DELETE FROM
                Online
            WHERE
                DATE_SUB(NOW(), INTERVAL 1 MINUTE) > Datum";
    mysql_query($sql) OR die(mysql_error());

    // Anzahl Ausgeben
    $sql = "SELECT
                COUNT(*) as Anzahl
            FROM
                Online";
    $result = mysql_query($sql) OR die(mysql_error());
    $row = mysql_fetch_assoc($result);

    echo "User Online: ".$row['Anzahl']."<br />";
?>

Inwiefern muss ich was ändern und inwiefern ist der Code überhaupt richtig.
Dazu muss ich wissen wie die spalte IP und DATUM in der DB aussehen muss.
Kann mir da jmd. helfen?
 
Dazu müssten wir erstmal wissen, wie dein Loginsystem aussieht.

Grundsätzlich kannst du einfach von folgender These ausgehen:
Jeder Benutzer der in den letzten 5 (oder ggf. 10) Minuten eine Aktion ausgeführt hat, ist online.

Sprich jeder Benutzer der eingeloggt ist, kriegt ein zusätzliches Feld in deiner Benutzertabelle "last_activity" (als Beispiel).

Da ich davon ausgehe, dass du auf jeder Seite prüfst, ob der Benutzer eingeloggt ist, kannst du die Überprüfung dazu nutzen, gleichzeitig den Zeitstempel in der Datenbank zu aktualisieren.

Anhand dessen kannst du dann auch in SQL auslesen, welche Benutzer online sind.
 
So schaut meine Login.php datei aus. (siehe unten)
Nein ich überprüfe nicht au jede Seite denm Benutzer sondern nur, dann wenns geheim werden soll :-P aber das spielt ja keine rolle ich will die onlineuser auf eine bestimmen seite anzeigen lassen. Unzwar meine standartseite, da ich mit frames arbeite. Aber das eimbauen ist kein problem.


PHP:
$verbindung = mysql_connect("localhost", "name" , "pw")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("dbname") or die ("Datenbank konnte nicht ausgewählt werden");

$username = $_POST["username"];
$passwort = md5($_POST["password"]);

$abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
    {
    $_SESSION["username"] = $username;
    echo "Login erfolgreich. <br> <a href=\"news.php\" >Zur Startseite zurück</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"login.html\">Login</a>";
    }
 
Zurück