Определение онлайн пользвателей
Ещё раз здрасте :) вот решил я на свём сайте сделать чат, и хочу сделать совместную регистрацию в чате и на форуме, форум уже есть, следственно готовые скрипты чата не подойдут т.к. копаться в чужом коде с ума сойдёшь. Ну вот а на самый простенький чатик я написал, конечно чатом это назвать трудно.... но столкнулся с одной проблемой: во всех чатах есть фремй где все онлайн-пользватели, если кто-то уходит, то он СРАЗУ исчезает из списка онлайн, а не через какое-то время. Так вот как это сделать???? Во многих чатах это с помощью сессий делаетца, а вот как это реализовать не знаю, киньте примерчик плизззззз.
user_id integer unsigned primary_key
lasttime integer unsigned index
Потом вставляешь в любое место на странице фрейм или <iframe>. У него задаешь href="online.php". online.php должен выдавать заголовок на обновление страницы. Я его не помню :)
В online.php просто обновляешь запись в таблице. Предполагается, что ты сохраняешь ID юзера например в сессиях. Через какое-то количество запросов удаляешь из БД записи, где lasttime > time() + 300. Надеюсь, сам догадаешься как реализовать
Ну да.... я уже прочитал подобный пост, я его просто не заметил :rolleyes: как это реализовать у меня идеи есть, я это недавно на файлах пробовал сделать, но запарился с записью и перезаписью файла и забил. В общем идея мне понятна. А вообще есть где-нибудь какая-нибудь инфа по написанию чата? например обновление страницы без мерцания и т.д. если можно кинь ссылочки.
Не знаю. Сам я этим не занимался. Попробуй поискать по форуму
Код:
<?echo "<meta http-equiv='Refresh' content='15; list_usr.php3?nick={$nick}'>";?>
<html>
<head>
<title></title>
</head>
<link rel=stylesheet href=chat_style.css>
<body>
<?
include("../../var.php3");
$connect=mysql_connect($db_host, $db_admin, $db_password);
$query=mysql_db_query("mchat", "select * from reg where status='a'");
echo "
<hr width=108%>
<div class=head align=center>Кто здесь? <img align=absmiddle src='../images/smiles/1.gif'></div>
<hr width=108%>
<table width=100% align=center cellpadding='2' cellspacing='2'>";
$i=0;
while($user=mysql_fetch_array($query)){
echo "
<tr>
<td><a title='Инфа!' target='_blank' href='info.php3?about=".$use["nick"]."'>".convert_cyr_string($user["nick"],"k","w")."</a></td>
<td><a href='input.php3?command=Private&to=".$user["nick"]."&from={$nick}' target='input' title='Приватное сообщение'><img border=0 src='../images/smiles/private.gif'></a></td>
</tr>
";
$i++;
}
echo "
</table>
<br>
<br>
<div class=counter align=right>Всего человек: {$i}</div>
";
<html>
<head>
<title></title>
</head>
<link rel=stylesheet href=chat_style.css>
<body>
<?
include("../../var.php3");
$connect=mysql_connect($db_host, $db_admin, $db_password);
$query=mysql_db_query("mchat", "select * from reg where status='a'");
echo "
<hr width=108%>
<div class=head align=center>Кто здесь? <img align=absmiddle src='../images/smiles/1.gif'></div>
<hr width=108%>
<table width=100% align=center cellpadding='2' cellspacing='2'>";
$i=0;
while($user=mysql_fetch_array($query)){
echo "
<tr>
<td><a title='Инфа!' target='_blank' href='info.php3?about=".$use["nick"]."'>".convert_cyr_string($user["nick"],"k","w")."</a></td>
<td><a href='input.php3?command=Private&to=".$user["nick"]."&from={$nick}' target='input' title='Приватное сообщение'><img border=0 src='../images/smiles/private.gif'></a></td>
</tr>
";
$i++;
}
echo "
</table>
<br>
<br>
<div class=counter align=right>Всего человек: {$i}</div>
";
может чем и поможет ))))
так что все, кто тут пишут - занимаются чистой воды шаманством ;)
и опять же само собой это "определяется" по промежутку времени, в который пользователь был активен... по истичении времени, и отсутствия активности, пользователь будет считаться "не в сети" :)
ЗЫ: а насчет прошлого моего поста, это было давно и я говорил уже, что только начинал... есть большой косяк, если пользователь закрыл чат, то он так и остается В списке "Кто здесь?" =)))))))
2ChesnoK: для того чтобы этого избежать тебе надо завести сессии, в БД, например.... и установить время истечения. тогда каждый раз, когда прогружается какой-либо из скриптов ты сможешь проверить из него, не истекли ли сессии. и соотвессна удалить узеров, которые свалили (ну а при нажатии кнопочки Logout всё проще ;))
А без шаманства кодинг был бы скушен ;)
Всем пасибо :)