Всем привет! Не знаю где можно задать вопрос. Попробую задать тут.
Сделал программу (основной модуль)на Delphi. один из модулей должен показывать пользователей в реальном времени.
В общем когда пользователь заходит на сайт, я записываю в базу его ID_SESSION
если пользователя нет, (страницу долго не обновляет), то такого пользователя удаляем из базы.
На сайте в среднем 20-30 чел. программа показывает IP адреса - с которого страница всегда обновляется. уже 4 день. не могу понять, то ли ошибка то ли реально пользователь на сайте.
Вопрос такой. Как реально получить информацию что это пользователь на сайте? Я думаю, может это быть "Бот" или "Робот"?
JS:
PHP кусочек
Код на Delphi очень большой. выкладывать не буду, лень. =)
С Уважением, Константин.
Сделал программу (основной модуль)на Delphi. один из модулей должен показывать пользователей в реальном времени.
В общем когда пользователь заходит на сайт, я записываю в базу его ID_SESSION
если пользователя нет, (страницу долго не обновляет), то такого пользователя удаляем из базы.
На сайте в среднем 20-30 чел. программа показывает IP адреса - с которого страница всегда обновляется. уже 4 день. не могу понять, то ли ошибка то ли реально пользователь на сайте.
Вопрос такой. Как реально получить информацию что это пользователь на сайте? Я думаю, может это быть "Бот" или "Робот"?
JS:
Код |
---|
function UpdateOnline() { JsHttpRequest.query('/ajax/mUpdateOnline.php', { 'idsession': document.getElementById("idsession").value ,'titlepage':document.title, 'titleurl':document.URL }, function(result, errors) { if (document.getElementById('imgmanager')) { if (errors == 0) { document.getElementById('imgmanager').style.display = 'none';; } else { document.getElementById('imgmanager').style.display = 'block'; } }}, true ); } setInterval("UpdateOnline()",15000); |
PHP кусочек
Код |
---|
<? //этот файл запускает скрит. добавляет, изменяет время онлайн или удаляет пользователя по истечению времени. require_once $_SERVER["DOCUMENT_ROOT"]."/script/JsHttpRequest/lib/JsHttpRequest/JsHttpRequest.php"; $JsHttpRequest =& new JsHttpRequest("windows-1251"); error_reporting(0); include $_SERVER["DOCUMENT_ROOT"]."/system/connect.php"; function getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; } return $ip; } // ID сессии $id_session = $_REQUEST['idsession']; $ip_session = getRealIpAddr(); $user = $_SERVER['HTTP_USER_AGENT']; $ro = "SELECT * FROM sessions WHERE id_session ='".$id_session."'"; $query = mysql_query($ro); if(!$query)exit(mysql_error()); // Если в БД уже есть такой ID сессии , следовательно //человек уже зашёл и пользуется ресурсом // значит просто обновляем его последнее время обращение к серверу... if(mysql_num_rows($query) > 0) { $sa = "UPDATE sessions SET up_date=NOW(), user='".$user."' , ip_addr='".$ip_session."' WHERE id_session ='".$id_session."'"; $upd = mysql_query($sa); } else { //... в противном случаи, пользователь только зашёл, регистрируем его посещение, // внося его идентификационный номер в БД (ID-сессии). $as="INSERT INTO sessions VALUES('".$id_session."',NOW(),'". $user."','". $ip_session."','','0')"; $into = mysql_query($as); } // Теперь чтоб определить когда пользователь вышел, предложим условие, // если в течении 15 минут страницы с сервера больше не запрашивались, // будем считать, что пользователь ушёл с сайта. // Удаляем его ID сессии $del = mysql_query("DELETE FROM sessions WHERE up_date<NOW()-INTERVAL '15' SECOND"); //Если поток был закрыт (окно менеджера) то пользователь ушел. Удаляем такую сессию. $del = mysql_query("UPDATE sessions SET open_date_thread='' WHERE open_date_thread<NOW()-INTERVAL '5' SECOND"); //Считываем с таблицы messager - значение onlinemessager (0 выключен. 1 включен) $sql = mysql_query("SELECT*FROM messager WHERE id_st='0'"); while($record = mysql_fetch_array($sql)) { echo $record[1]; } ?> |
Код на Delphi очень большой. выкладывать не буду, лень. =)
С Уважением, Константин.