Файл: tracking/index.php
Строк: 178
<?php
require '../inc/sys.php';
if (isset ($_GET['archive']))
{
$guard->logs ();
$doc->msg ('Статистика перемещена в файловый архив', '/guard/');
}
function urlName ($url)
{
if (preg_match ('/$adm_panel//i', $url))
return 'админ-панель';
elseif (preg_match ('//chat//i', $url))
return 'чат';
elseif (preg_match ('//forum//i', $url))
return 'форум';
elseif (preg_match ('//obmen//i', $url))
return 'обменник';
elseif (preg_match ('//loads//i', $url))
return 'загрузки';
elseif (preg_match ('//votes//i', $url))
return 'голосования';
elseif (preg_match ('//guest//i', $url))
return 'гостевая';
elseif (preg_match ('/info.php/i', $url))
return 'анкета';
elseif (preg_match ('//foto//i', $url))
return 'фотоальбомы';
elseif (preg_match ('//lib//i', $url))
return 'библиотека';
elseif (preg_match ('//news//i', $url))
return 'новости';
elseif (preg_match ('/index.php/i', $url))
return 'главная';
elseif (preg_match ('/aut.php/i', $url))
return 'вход';
elseif (preg_match ('/reg.php/i', $url))
return 'регистрация';
elseif (preg_match ('/mail.php/i', $url))
return 'почта';
elseif (preg_match ('/konts.php/i', $url))
return 'контакты';
elseif (preg_match ('/users.php/i', $url))
return 'пользователи';
elseif (preg_match ('/online.php/i', $url))
return 'пользователи on-line';
else
return 'название не определено';
}
if (!isset ($ps['filters']))
$ps['filters'] = null;
if (isset ($_GET['filters_status']))
{
if ($_GET['filters_status'] == 1)
$ps['filters_dossier_status'] = 1;
else
$ps['filters_dossier_status'] = 0;
}
function is_filt ($name)
{
global $ps;
if (!empty ($ps['filters'][$name]))
return true;
else
return false;
}
/* Так фича для меня :D */
function filter ($arg)
{
global $ps, $_GET, $filt;
if (isset ($_GET[$arg]))
$ps['filters'][$arg] = $filt->in ($_GET[$arg]);
if (isset ($ps['filters'][$arg]))
return $filt->in ($ps['filters'][$arg]);
}
/* Проверка на нулость */
function not_null ($var)
{
if (empty ($var))
return 'пусто';
else
return $var;
}
/* Очистка слежения */
if ($sys->confirm ('clean','/guard/'))
{
mysql_query ("DELETE FROM `guard_tracking`");
}
/* Обнуление фильтров */
if (isset ($_GET['refresh']))
{
$ps['filters'] = null;
$filters = null;
$_GET = null;
}
/* Вывод фильтров */
if (empty ($ps['filters_dossier_status']))
{
echo "<a href='?filters_status=1'>".$doc->icon ('setting')." Включить фильтры</a><br />";
$ps['filters'] = null;
}
else
{
if (isset ($_GET['select']))
{
echo '<div class="post">'.$doc->icon ('arrow_right').' Выбрать ';
if ($_GET['select'] == 'browsers')
{
echo 'браузер: ';
$doc->lineLink ('Opera','?browser=opera', ', ');
$doc->lineLink ('FireFox','?browser=firefox', ', ');
$doc->lineLink ('Internet Explorer','?browser=explorer', ', ');
$doc->lineLink ('Chrome','?browser=chrome', ', ');
$doc->lineLink ('Opera Mini','?browser=opera mini', ', ');
$doc->lineLink ('Safari','?browser=safari');
}
elseif ($_GET['select'] == 'url')
{
echo 'адрес: ';
$doc->lineLink ('анкеты','?php_self=/info.php', ', ');
$doc->lineLink ('админ-панель','?php_self=/adm_panel', ', ');
$doc->lineLink ('гостевая','?php_self=/guest/', ', ');
$doc->lineLink ('чат','?php_self=/chat', ', ');
$doc->lineLink ('форум','?php_self=/forum', ', ');
$doc->lineLink ('загрузки','?php_self=/loads', ', ');
$doc->lineLink ('обменник','?php_self=/obmen', ', ');
$doc->lineLink ('голосования','?php_self=/votes');
}
elseif ($_GET['select'] == 'users')
{
echo 'пользователя: ';
$i = 0;
$text['nores'] = '';
$sql->output ('user', '`id` != 1', '`date_last` DESC', 5);
while ($prof = mysql_fetch_assoc ($while))
{
$i++;
$doc->lineLink ($prof['nick'],'?user='.$prof['id'], ($i == $k_post?null:', '));
}
}
noBr (1);
$doc->link ('[delete] Скрыть список', '?page='.$page);
echo '</div>';
}
echo "<a href='?filters_status=0'>".$doc->icon ('setting')." Выключить фильтры</a><br />";
$form = new form ('?page='.$page, false, 'get');
$form->brInput ('ID пользователя (<a href="?select=users">выбрать</a>)', 'user', filter ('user'), 5);
$form->brInput ('Браузер/ОС (<a href="?select=browsers">выбрать</a>)', 'browser', filter ('browser'), 5);
$form->brInput ('URL (<a href="?select=url">выбрать</a>)', 'php_self', filter ('php_self'), 5);
$form->brInput ('GET-запрос', 'query_string', filter ('query_string'), 5);
$form->brInput ('IP', 'ip', filter ('ip'), 5);
$form->brInput ('Proxy IP', 'proxy_ip', filter ('proxy_ip'), 5);
$form->brInput ('Referer', 'referer', filter ('referer'), 5);
echo 'Генерация от ';
noBr (1);
$form->brInput (' до ', 'gen_from', filter ('gen_from'), 2);
$form->brInput (' сек', 'gen_to', filter ('gen_to'), 2);
$form->hidden ($page, 'page');
$form->end ('Фильтровать', 'filt', true);
}
$filters = null;
if (is_filt ('user'))
$filters[] = "`user` = '".$ps['filters']['user']."'";
if (is_filt ('browser'))
$filters[] = "`user_agent` like '%".$ps['filters']['browser']."%'";
if (is_filt ('php_self'))
$filters[] = "`php_self` like '%".$ps['filters']['php_self']."%'";
if (is_filt ('query_string'))
$filters[] = "`query_string` like '%".$ps['filters']['query_string']."%'";
if (is_filt ('ip'))
$filters[] = "`ip` like '%".$ps['filters']['ip']."%'";
if (is_filt ('proxy_ip'))
$filters[] = "`proxy_ip` like '%".$ps['filters']['proxy_ip']."%'";
if (is_filt ('referer'))
$filters[] = "`referer` like '%".$ps['filters']['referer']."%'";
if (is_filt ('gen_from'))
$filters[] = "`gen_from` > '".$ps['filters']['gen_from']."%'";
if (is_filt ('gen_to'))
$filters[] = "`gen_to` < '".$ps['filters']['gen_to']."'";
/* Вывод шага отдельно и списком */
if (isset ($_GET['step']))
{
$filters = null;
$filters[] = "`id` = '".intval ($_GET['step'])."'";
}
$sql->output ('guard_tracking', $filters);
while ($step = mysql_fetch_assoc ($while))
{
if (empty ($step['user']))
$stepUserNick = '<font color="red">Гость</font>';
else
{
$stepUserProf = get_user ($step['user']);
$stepUserNick = '<a href="/info.php?id='.$stepUserProf['id'].'">'.$stepUserProf['nick'].'</a>';
}
/* Статус входа/выхода */
$aut = null;
if ($step['user'] != 0)
{
if ($step['aut_status'] == 1)
$aut = '<font color="green">[вошел]</font>';
elseif ($step['aut_status'] == 2)
$aut = '<font color="red">[вышел]</font>';
elseif ($step['aut_status'] == 3)
$aut = '<font color="orange">[зашел/вышел]</font>';
}
$method = ($step['query_string']?'GET':null).' '.($step['method'] == 'GET'?null:'POST');
echo '<div class="post">
'.$doc->icon ('step', '?step='.$step['id']).'
'.$step['id'].') <b>'.$stepUserNick.' '.$aut.'</b> ('.vremja ($step['time']).')<br />
<b>Браузер/ОС</b>: '.not_null ($step['user_agent']).'<br />
<b>IP</b>: '.not_null ($step['ip']).'<br />
<b>Proxy IP</b>: '.not_null ($step['proxy_ip']).'<br />
<b>Referer</b>: '.not_null ($step['referer']).'<br />
<b>URL</b>: '.$step['php_self'].($step['query_string']?'?'.$step['query_string']:null)."<br />
<b>Методы</b>: ".($method == ' '?'пусто':$method)."<br />
<b>Модуль</b>: ".urlName ($step['php_self'])."<br />
<b>Генерация</b>: ".$step['generation'].' сек';
if (mysql_num_rows (mysql_query ("SELECT `id` FROM `guard_dossier` WHERE `step` = '$step[id]'")))
{
$dossier = $sql->assocArray ('guard_dossier', '`step` = '.$step['id']);
echo '<br /><font color="red"><b>Нарушение</b>: '.$guard->cause ($dossier['section'], $dossier['type']).'</font>';
}
echo '</div>';
/* Дописать определение перегрузки сервера */
}
$sysLinks['menu'] = true;
$doc->link ('Очистить историю слежения', '?clean');
$doc->link ('Переместить историю в архив', '?archive');