|
|
|
| собственно сабж
спасибо зарание! | |
|
|
|
|
|
|
|
для: ref
(10.08.2004 в 12:54)
| | Хм... проблему можно решить, но вам в любом случае необходимо будет где-то хранить время последнего посещения с сессии, либо в базе данных, либо в файле. Ближе к вечеру я постараюсь выложить здесь наброски для варианта в MySQL.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=150&page=2 | |
|
|
|
|
|
|
|
для: cheops
(10.08.2004 в 13:51)
| | Для начала следует создать таблицу session в базе данных (ну, пусть будет test)
CREATE TABLE session (
id_session tinytext NOT NULL,
putdate datetime NOT NULL default '0000-00-00 00:00:00',
user tinytext NOT NULL
) TYPE=MyISAM;
|
В id_session будет храниться уникальный id сессии, во втором поле putdate - время последнего обращения с неё, в последнем имя посетителя, связанного с этой сессией...
Страница которую посещает посетитель должна включать код
<?php
$user = "user1";
$password = "password1";
// Начинаем сессию
session_start();
// Заносим в сессию имя пользователя и его
// пароль
$_SESSION['user'] = $user;
$_SESSION['password'] = $password;
//////////////////////////////////////////////
// А в базу данный заносим имя пользователя
// время его посещения, и уникальный id сессии
//////////////////////////////////////////////
// Устанавливаем содинение с базой данных
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>К сожалению, не доступен сервер MySQL</p>";
exit();
}
// Выбираем базу данных
if (!@mysql_select_db($dbname, $dbcnx))
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
// Получаем уникальный id сессии
$id_session = session_id();
// Проверяем присутсвует ли такой id в базе данных
$query = "SELECT * FROM session
WHERE id_session = '$id_session'";
$ses = mysql_query($query);
if(!$ses)
{
echo "<p>Ошибка в запросе к таблице сессий</p>";
exit();
}
// Если сессия с таким номером уже существует,
// значит пользователь online - обновляем время его
// последнего посещения
if(mysql_num_rows($ses)>0)
{
$query = "UPDATE session SET putdate = NOW()
WHERE id_session = '$id_session'";
mysql_query($query);
}
// Иначе, если такого номера нет - посетитель только что
// вошёл - помещаем в таблицу нового посетителя
else
{
$query = "INSERT INTO session VALUES('$id_session',NOW(),'$user')";
if(!mysql_query($query))
{
echo $query."<br>";
echo "<p>Ошибка при добавлении пользователя</p>";
exit();
}
}
// Будем считать, что пользователи, которые отсутствовали
// в течении 20 минут - покинули ресурс - удаляем их
// id_session из базы данных
$query = "DELETE FROM session WHERE putdate < NOW() - INTERVAL '20' MINUTE";
mysql_query($query);
?>
|
Страница для просмотра online-пользователей можно генерировать при помощи скрипта:
<?php
// Устанавливаем содинение с базой данных
$dblocation = "127.0.0.1";
$dbname = "test";
$dbuser = "root";
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "<p>К сожалению, не доступен сервер MySQL</p>";
exit();
}
// Выбираем базу данных
if (!@mysql_select_db($dbname, $dbcnx))
{
echo "<p>К сожалению, не доступна база данных</p>";
exit();
}
// Выводим имена всех посетителей, записи о ком имеются
// в таблице session
$query = "SELECT * FROM session";
$ath = mysql_query($query);
if(!$ath)
{
echo "<p>Ошибка в запросе к таблице сессий</p>";
exti();
}
// Если хоть кто-то есть - выводим таблицу
if(mysql_num_rows($ath)>0)
{
echo "<table>";
while($author = mysql_fetch_array($ath)) echo "<tr><td>".$author['user']."</td></tr>";
echo "</table>";
}
?>
|
| |
|
|
|