отслеживание юзеров на сайте

  • Автор темы Cryptonit
  • Дата начала

Cryptonit

Guest
отслеживание юзеров на сайте

как реализовать периодические запросы, не только при переходе юзера со страницы на страницу, но и во время пребывания на них?
 

ast-ross

Новичок
Вот тебе рабочий вариант:
файл online.php
PHP:
<?
session_start();
?>
<html>
<head>
<title>online</title>
<meta http-equiv=refresh content=30>
</head>
<body bgcolor=CCCCCC scroll=no>
<?
$db_connect=mysql_connect("ХОСТ", "ПОЛЬЗОВАТЕЛЬ", "ПАРОЛЬ");
mysql_select_db("ТВОЯ БД"); // имеет таблицу sessions c полями phpsessid и sess_time
$query_online=mysql_query("SELECT phpsessid FROM sessions where phpsessid='".session_id()."'");
if (mysql_num_rows($query_online)>0) $query_online="UPDATE sessions SET sess_time='".time()."' 
WHERE phpsessid='".session_id()."'";
else $query_online="INSERT INTO sessions (phpsessid, sess_time) VALUES ('".session_id()."', '".time()."')";
mysql_query($query_online);
mysql_close($db_connect);
?>
</body>
</html>
а в файле index.php
PHP:
<?
session_start();
?>
<iframe src='./online.php' width=1 height=1 frameborder=0></iframe>
КУКИ должны быть включены и sid дожен быть там
 

ast-ross

Новичок
nu v obshem podprav pod svoi nuzhdi i uzay
a vot tebe fail dlya krona (chtoby chistit mertvie seansy)
PHP:
<?
$db_connect=mysql_connect("host", "user", "pass");
mysql_select_db("base");
$del_time=time()-60;
$query="SELECT phpsessid FROM sessions WHERE sess_time<'".$del_time."'";
$result=mysql_query($query);
for ($i=0; $i!=mysql_num_rows($result); $i++)
 {
 $del_sess=mysql_result($result, $i, "phpsessid");
 mysql_query("DELETE FROM sessions where phpsessid='".$del_sess."'");
 unlink("C:/WebServer/temp/sess_".$del_sess);
 }
mysql_close($db_connect);
?>
C:/WebServer/temp/sess_ - podprav kak u tebya
i ne zabud ispravit host, user, pass, i base
 

Cryptonit

Guest
а если юзер задержится на одной странице дольше минуты? его ведь удалят.

здесь был написан изврат про интеграцию с javascript
http://www.faqts.com/knowledge_base/view.phtml/aid/10707/fid/51
но привязка пхп кода к событиям у меня упорно не работает.
Вопрос ведь и был о том можно ли переодически опрашивать не переходя со страницы на страницу.
 

Cryptonit

Guest
так ведь $del_time же апдейтится не будет и устареет, а значит потрут.
 

ast-ross

Новичок
posmotri vnimatelno:
v index.php iframe-om podklychaetsya online.php v kotorom est autorefresh kazhdie 30 sekund:
<meta http-equiv=refresh content=30> => v esli user na meste kazhdiye 30 sekund budet obnovlyatsya v bd pole sess_time
a kronom zapuskaetsya kazhduy minutu script pokazanniy vishe kotoriy budet ubivat seansy kotoriye ne obnovlalis bolee 1 minuty... Proveryal vse 100% rabotayet, konechno mozhno eshe optimizirovat, no eto uzhe delo kazhdogo...
ps: izvinyays za to chto pishu latyniy, noutbook pognal po russki pisat ne hochet ;)
 

Cryptonit

Guest
жутко извиняюсь, этот
<meta http-equiv=refresh content=30>
тег я пропустил.

-------------

правда тема интеграции с javascript остаётся открытой, но это уже другой вопрос...
 

Фанат

oncle terrible
Команда форума
использовать для подсчета количества пользователей на сайте сессии, при том запихивая их в базу - верх идиотизма.
Задействовать громоздкий механизм только для того, чтобы поставить куку!

Cryptonit, почему вообще ты поместил свой вопрос в форум по РНР, а не по яваскрипту - можешь пояснить?

Ты спросил - как организовать периодические запросы. Ну и кто кого у тебя будет опрашивать? можешь на этот вопрос ответить?

Ты не смог толком сформулировать свою задачу и получил ответ ламера.
 

Cryptonit

Guest
Cryptonit, почему вообще ты поместил свой вопрос в форум по РНР, а не по яваскрипту - можешь пояснить?

здесь по крайней мере могли сказать альтернативные решения

PHP:
Ты спросил - как организовать периодические запросы. Ну и кто кого у тебя будет опрашивать? можешь на этот вопрос ответить?
пхп код опрашивает некое хранище данных.

вопрос задан в общей форме, чтобы ответы давались разные, потому что как здесь лучше сделать я ещё незнаю.

использовать для подсчета количества пользователей на сайте сессии, при том запихивая их в базу - верх идиотизма.
Задействовать громоздкий механизм только для того, чтобы поставить куку!
если это идиотично, то может ты уточнишь свой вариант?
 

Cryptonit

Guest
ФАНАТ, суть вопроса в следующем, нужно вывести таблицу с именами пользователей, находящихся в онлайне,

что используют для обновления данных каждого юзера и удаления ушедших с онлайна помимо рефреша страницы, пхп кода в поп апах и установки гигантской задержки удаления устаревших записей?
 

Фанат

oncle terrible
Команда форума
альтернативные решения
альтернативные решения чего? Того, как РНР будет сам себя опрашивать?
читай внимательно и вдумчиво [f]na_tanke[/f].
прежде, чем браться за решение какой-то проблемы, надо ознакомиться хотя бы с азами функционирования компонентов.
пхп код опрашивает некое хранище данных
читай внимательно и вдумчиво [f]na_tanke[/f].
прежде, чем браться за решение какой-то проблемы, надо ознакомиться хотя бы с азами функционирования компонентов.

Я надеюсь, ты не расценишь это как оскорбление.
А пойдешь и прочтешь. Если пожелаешь - я тебе сюда скопирую.
И отвечу на вопросы.

чтобы у тебя больше не возникало вопросов типа "как РНР, находясь на сервере, будет при этом сам себя из браузера опрашивать" и "к исполняющийся долю секунды только по запросу браузера РНР скрипт будет кого-то периодически опрашивать"

Договорились?

может ты уточнишь свой вариант
лехко.
это самая классическая задачка.
Мы в нее сейчас не включаем проблему идентификации юзеров - это могут быть авторизованные каким-то способом, или - классически - по IP (зависит от задачи).
А сама задача решается просто.
пишем в файл идентификатор посетителя и время. Можно, чтобы не париться с блокировкой, писать на каждого отдельный файл.
и при каждом запросе страницы обновлять запись о юзере, а после этого по заранее определенному таймауту - скажем, 3 или 5 минут - удалять устаревшие записи.
оставшийся массив - и есть количество пользователей на сайте.
 

Фанат

oncle terrible
Команда форума
нужно вывести таблицу с именами пользователей, находящихся в онлайне
Ну так это классическая задача.
Для начала объясни, как ты узнаешь имя юзера, когда он запрашивает у тебя страницу.
что используют для обновления данных каждого юзера
факт обращения его к сайту
удаления ушедших с онлайна
таймаут. обычно это не более 3 - 5 минут.
рефреша страницы
рефреша страницы, друг мой, с одной стороны, позволяет более точно определять наличие пользователя, но с дгугой - так часто глючит, что ни для каких сайтов, кроме развлекательных, не используется.
пхп кода в поп апах
прочти фак на танке
гигантской задержки удаления устаревших записей
а это еще зачем?
 
Сверху