| .:EnoT:. |
05.08.2008 01:50 |
Цитата:
на главной странице форума античата список тех, кто онлайн. нужен скрипт такой, чтобы был вывод на html странице.
|
эээ..типо список юзеров?
Всё это безобразие делается примерно так:
Создаёшь с БД таблицу например `sessions` примерно с таким содержанием:
Код:
CREATE TABLE `sessions` (
`session` varchar(32) NOT NULL,
`date` datetime NOT NULL,
`username` varchar(100)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Далее в главном файле делаем примерно следующее:
PHP код:
<?php
session_start();
$session = session_id();
$_SESSION['username'] = !empty($_COOKIE['name']) ? $_COOKIE['name'] : ''; //Имя юзера (для примера берём с куки)
$interval = 15; //интервал бездействия юзера в мин
#Экранируем имя юзера (но лучше сделать функцию получше =)))
$u_name = !get_magic_quotes_gpc() ? mysql_real_escape_string($_SESSION['username']) : $_SESSION['username'];
$sql = mysql_query("SELECT * FROM `sessions` WHERE `session` = '".$session."'");
if($sql && mysql_num_rows($sql) > 0){
#Если сессия уже существует то обновляем время
mysql_query("UPDATE `sessions` SET `date` = NOW(), `username` = '".$u_name."' WHERE `session`='".$session."'");
}else{
#Если не существует то заносим
mysql_query("INSERT INTO `sessions` VALUES('".$session."', NOW(),'".$u_name."')");
}
#Удаляем старые сесии
mysql_query("DELETE FROM `sessions` WHERE `date` < NOW() - INTERVAL '".$interval."' MINUTE");
?>
Далее делаем функцию которая получает кол-во гостей и пользователей:
PHP код:
function online(){
$sql = mysql_query("SELECT COUNT(*) FROM `sessions` WHERE `username` != '' UNION SELECT COUNT(*) FROM `sessions` WHERE `username` = ''");
$users = mysql_result($sql, 0);
$guests = mysql_result($sql, 1);
$vsego = $users + $guests;
return array(
'vsego' => intval($all),
'users' => intval($users),
'guests' => intval($guests])
);
}
Соответственно фукция возвращает массив. Выводится так:
PHP код:
<?php
$online = online();
echo 'Сейчас на сайте '.$online['vsego'].' пользователей ('.$online['users'].' гостей и '.$online['guests'].' гостей)';
?>
А ники юзеров выводятся просто циклом, типо того:
PHP код:
$sql = mysql_query("SELECT * FROM `sessions` WHERE `username` != ''");
if($sql && mysql_num_rows($sql) > 0){
while($nick = mysql_fetch_array($sql)){
echo htmlspecialchars($nick['username']).'<br/>';
}
}
Короче в таком духе))
|