On-line пользователи нужна таблица
On-line пользователи нужна таблица
Их каких или какой таблицы можно вытащить on-line пользователей? На форуме была эта тема, но ссылки на скриптик все мертвые.
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
Какое отношение имеет нахождение пользователя в онлайн к UTM? У меня, например, подключаются по PPTP (что не суть важно) и получают IP из диапазона 172.30.0.0/16. Вот такой простейший скрипт показывает пользователей онлайн, а также их количество:
Написан на коленке за минуту
Могу ещё php-скрипт привести, который выводит пользователей в онлайн с логинами.
Код: Выделить всё
#!/bin/bash
echo -e "Список IP-адресов:"
ifconfig | grep 172.30 | awk '{print $3}'| cut -f2 -d:| sort
Numbers=`ifconfig| grep 172.30 | wc -l`
echo -e "Количество пользователей на линии: $Numbers\n"
Могу ещё php-скрипт привести, который выводит пользователей в онлайн с логинами.
Сомневаюсь, что это есть в какой-либо таблице. Впрочем, утверждать не буду. Меня и мой вариант вполне устраивает. У меня сделан самопальный php-скрипт, который выводит список пользователей, висящих в настоящий момент в онлайн.mesmit писал(а):Смысл в другом. Когда выводится скриптом в браузере список пользователей, которые берутся из таблицы users, нужно как то выделить цветом пользователей, которые находятся в on-line. Где-то в какой-то таблице базы, наверное, есть пометка, что у пользователя сессия не закрыта или что-нибудь подобное.
-
- Сообщения: 1612
- Зарегистрирован: Пт ноя 10, 2006 15:23
Спасибо за информацию. Не знал. Надо будет покопать эту табличку. То есть то, что она есть и используется, я конечно знал. Но вот про коды не слышал. Может потому, что необходимости такой не было.mikkey finn писал(а):Таблица dhs_sessions_log в базе данных UTM5. Поле - Acct_Status_Type
Коды админка пишет. Типа "закрыта сессия(2)", "открыта(1)", "обновлена(3)". Мож еще какие состояния есть.

-
- Сообщения: 14
- Зарегистрирован: Чт авг 10, 2006 14:36
Re: On-line пользователи нужна таблица
есть такой переделанный с нибса файликmesmit писал(а):Их каких или какой таблицы можно вытащить on-line пользователей? На форуме была эта тема, но ссылки на скриптик все мертвые.
online.php:
Код: Выделить всё
<?php
$db_connect=mysql_connect("localhost", "user", "pass") or die ("Connect failed.");
$db_coonect=mysql_select_db("UTM5") or die ("Fatal database query 'USE' error");
?>
<HTML>
<HEAD>
<style>
{FONT-SIZE: 12px;}
{ font-family: Verdana, Arial, Helvetica, sans-serif; }
A:link { COLOR: #003366; TEXT-DECORATION: none }
A:visited { COLOR: #003366; TEXT-DECORATION: none }
A:active { COLOR: #000099; TEXT-DECORATION: none }
A:hover {COLOR: #000000; TEXT-DECORATION: underline}
Body { background-color:#ffffcc; color:#000000 }
</style>
<TITLE>::OnLine</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="refresh" content='60'>
</HEAD>
<BODY BGCOLOR="#000000" LINK=blue VLINK=blue VLINK=blue>
<?
function format_time($sec)
{
$a = array(
86400 => 'дн.', // количество секунд в сутках
3600 => 'ч.', // количество секунд в часе
60 => 'мин.', // количество секунд в минуте
1 => 'сек.' // количество секунд в секунде
);
$out = '';
foreach ($a as $k=>$v) {
$tmp = floor($sec/$k);
$out .= ($tmp?$tmp.$v.' ':'');
$sec -= $tmp*$k;
}
return $out;
}
function sectime($stri,$tota) {
$hour=$tota / 3600; settype($hour,integer); $rel=ereg_replace("h","$hour",$stri);
$min=$tota % 3600 / 60; settype($min,integer); if ($min<10) $min="0$min"; $rel=ereg_replace("m","$min",$rel);
$sec=$tota % 3600 % 60; settype($sec,integer); if ($sec<10) $sec="0$sec"; $rel=ereg_replace("s","$sec",$rel);
return($rel);
}//sectime
$result = mysql_query ("select account_id,
User_Name,
Acct_Input_Octets,
Acct_Output_Octets,
NAS_Id,
NAS_Port,
(CONCAT_WS('.',SUBSTRING_INDEX(INET_NTOA(Framed_IP_Address&0xFFFFFFFF),'.',-1),
SUBSTRING_INDEX(SUBSTRING_INDEX(INET_NTOA(Framed_IP_Address&0xFFFFFFFF),'.',-2),'.',1),
SUBSTRING_INDEX(SUBSTRING_INDEX(INET_NTOA(Framed_IP_Address&0xFFFFFFFF),'.',2),'.',-1),
SUBSTRING_INDEX(INET_NTOA(Framed_IP_Address&0xFFFFFFFF),'.',1))) as fr_ip,
Acct_Session_Time,
Calling_Station_Id,
recv_date from dhs_sessions_log
where Acct_Status_Type=1 or Acct_Status_Type=3")or die("online_list.php -> err1 ".mysql_error($LINK)); //desc
$count=mysql_num_rows ($result);
?>
<TABLE align=center BORDER=0 CELLSPACING=1 CELLPADDING=4 BGCOLOR=black>
<TR BGCOLOR="#dddd99" ALIGN=center><TD COLSPAN="11"><b>Online: <?echo $count;?></b></TD></TR>
<TR BGCOLOR="#000000" ALIGN=center>
<TH><FONT color=#dddd99>N</TH>
<TH><FONT color=#dddd99>Пользователь</TH>
<TH><FONT color=#dddd99>Подключился</TH>
<TH><FONT color=#dddd99>Время</TH>
<TH><FONT color=#dddd99>Послал</TH>
<TH><FONT color=#dddd99>Принял</TH>
<TH><FONT color=#dddd99>empty</TH>
<TH><FONT color=#dddd99>IP</TH>
<TH><FONT color=#dddd99>Call from</TH>
<TH><FONT color=#dddd99>NAS</TH>
<TH><FONT color=#dddd99>Выполнить</TH>
</TR>
<?
for ($i = 0; $i < mysql_num_rows ($result); $i++) {
$row = mysql_fetch_object ($result);
echo" <TR BGCOLOR=#dddd99>\n";
printf (" <TD ALIGN=center>%s</TD>\n", $i+1);
printf (" <TD ALIGN=center><B>%s</A></B></TD>\n", $row->User_Name);
$time_new=date("d.m.Y H:i:s",$row->recv_date);
printf (" <TD ALIGN=center><font size=-1>%s</font></TD>\n", $time_new);
$ttime = sectime('h:m:s', $row->Acct_Session_Time);
printf (" <TD ALIGN=center>%s</TD>\n", $ttime);
printf (" <TD ALIGN=center>%.2f</TD>\n", $row->Acct_Input_Octets/1024/1024);
printf (" <TD ALIGN=center>%.2f</TD>\n", $row->Acct_Output_Octets/1024/1024);
printf (" <TD ALIGN=CENTER>%s</TD>\n", $ff);
printf (" <TD ALIGN=left>%s</TD>\n", ($row->fr_ip));
printf (" <TD ALIGN=CENTER>%s</TD>\n", $row->Calling_Station_Id);
#printf (" <TD ALIGN=CENTER>%s:%s</TD>\n", $row->NAS_Id, $row->NAS_Port);
printf (" <TD ALIGN=CENTER>%s:%s</TD>\n", $row->NAS_Id,$row->NAS_Port);
echo ("<TD ALIGN=center></a>
</TD>\n");
echo " </TR>\n";
}
mysql_free_result ($result);
?>
</TABLE>