Webmaster общности: Predpriemach.com | SearchEngines.bg

    Кои потребители са online

    Ще напиша скрипт за Login система, която използва база данни и сесии. В таблицата, в която записваме името и паролата на потребителя ще направим едно поле timestamp, в което ще записваме часът, в който потребителят се е логнал в страницата.
    Ето кодът за създаване на таблица users, ако нямате такава:

    CREATE TABLE `users` (
    `id` int(20) NOT NULL auto_increment,
    `username` varchar(64) NOT NULL,
    `password` varchar(64) NOT NULL,
    `timestamp` text NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `username` (`username`)
    );

    Ето кодът за добавяне на timestamp в таблица с име users:

    ALTER TABLE `users` ADD `timestamp` TEXT NOT NULL AFTER `password` ;

    Следващият код ще запишем във файл onlineusers.php

    <?php
    session_start();
    if($_SESSION['username'])
    {
    $host = "**";//хост на MySQL
    $user = "**";//потребител на MySQl
    $pass = "**";//парола на потребителя на MySQL
    $db = "**";//име на базата данни, в която е таблицата users
    $conn = mysql_connect("$host", "$user", "$pass") or die ("Unable to connect to database.");
    mysql_select_db("$db", $conn);
    $sesusername = $_SESSION['username'];
    $time=time();
    $query = "UPDATE users SET timestamp='$time' WHERE username='$sesusername'";
    $result = mysql_query($query);
    $timestamp=time()-60;
    $query1 = "SELECT * FROM users WHERE timestamp>'$timestamp'";
    $result1 = mysql_query($query1);
    while($row = mysql_fetch_array($result1, MYSQL_ASSOC))
    {
    echo " ". $row['username']."\r\n";
    }
    }
    else
    {
    die("");
    }
    ?>

    Сега обяснение как работи.
    С $time=time(); взимаме времето в момента на логване във формат timestamp.
    С този ред
    $query = „UPDATE users SET timestamp=’$time’ WHERE username=’$sesusername'“;
    обновяваме времето. Записва се във формат timestamp. С $timestamp=time()-60; изчисляваме времето в момента минус 60 секунди. С този ред
    $query1 = „SELECT * FROM users WHERE timestamp>’$timestamp'“;
    търсим потребители, на които timestamp е обновено преди по-малко от 60 секунди. И после се извеждат
    имената на тези потребители.
    Ако искате да се показва и колко потребители са били онлайн през последните 24 часа като бройка, след тези редове

    {
    echo "". $row['username']."\r\n";
    }
    

    добавете тези

    $lastday=time()-86400;
    $query2 = "SELECT COUNT(username) FROM users WHERE timestamp>'$lastday'";
    $result2 = mysql_query($query2);
    while($row = mysql_fetch_array($result2, MYSQL_ASSOC))
    {
    echo "". $row['COUNT(username)']."";
    }

    Ако искате да се показват като имена просто махате COUNT.

    Този файл можете да го инклуднете в страницата, която се отваря след като се логне потребителят по този начин:

    <?php include "onlineusers.php"; ?>

    Демо няма как да дам, защото ще ми трябва цяла Login система.

    Този урок е написан специално за web-tourist.net. Забранявам копирането и публикуването му в друг сайт!

    Оставете коментар