Кои потребители са 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. Забранявам копирането и публикуването му в друг сайт!


