Спустя 31 минута, 6 секунд (13.03.2011 - 17:23) sochinec написал(а):
1. MySQL
2. считать время открытой сессии. Или IP адреса если есть ситема рЕгистрации авторизации
3. По истечению СЕССИИ
2. считать время открытой сессии. Или IP адреса если есть ситема рЕгистрации авторизации
3. По истечению СЕССИИ
Спустя 20 минут, 44 секунды (13.03.2011 - 17:44) Guest написал(а):
допустим я создал таблицу с столбцами IP и lastactive, при каждом заходе на сайт пользователя проверяется если ли его IP в БД, если нет то создается новая строка, если есть то lastactive обновляется. сам скрипт берет все ластактивы которые меньше настоящего времени на 20 минут и плюсует их, получая переменную $count. однако при таком подходе бд может содержать очень много строк, как организовать их удаление. еще как быть с пользователями с динамическим IP? пользователей использующих один и тот же местный провайдер у которого один ip на всех и тд? использовать cookies? тогда как быть с теми у кого вышеперечисленное и отключенный куки?
Спустя 2 минуты, 52 секунды (13.03.2011 - 17:47) sochinec написал(а):
Спустя 10 минут, 30 секунд (13.03.2011 - 17:57) Guest написал(а):
допустим. а как быть с удалением строк?
Спустя 11 минут, 3 секунды (13.03.2011 - 18:08) imbalance_hero написал(а):
deardeer
1) User => lastactive. При выборе указываешь интервал в 15 минут от времени сейчас, сколько записей попадает под этот диапазон - столько пользователей в сети. Так и по отдельности проверяется.
Обновляется ячейка lastactive у пользователя при любом его действии на сайте.
1) User => lastactive. При выборе указываешь интервал в 15 минут от времени сейчас, сколько записей попадает под этот диапазон - столько пользователей в сети. Так и по отдельности проверяется.
Обновляется ячейка lastactive у пользователя при любом его действии на сайте.
Спустя 1 минута, 56 секунд (13.03.2011 - 18:10) sochinec написал(а):
1) Стартуем сессию.
2) Получаем SID.
3) Ищем его в таблице БД.
4) Если не находим добавляем запись с временем
5) Если находим обновляем время
6) Одновременно с 4,5 пунктом идет сверка с уже имеющимися записями в БД, если например время в поле больше на 20 минут настоящего времени на серваке, значит юзер ушел, или зачитался )))
Удаляешь таблицу.
Как то так..
2) Получаем SID.
3) Ищем его в таблице БД.
4) Если не находим добавляем запись с временем
5) Если находим обновляем время
6) Одновременно с 4,5 пунктом идет сверка с уже имеющимися записями в БД, если например время в поле больше на 20 минут настоящего времени на серваке, значит юзер ушел, или зачитался )))
Удаляешь таблицу.
Как то так..
Спустя 21 минута, 45 секунд (13.03.2011 - 18:32) deardeer написал(а):
благодарю
Спустя 3 часа, 36 минут, 19 секунд (13.03.2011 - 22:08) deardeer написал(а):
сделал так
$dsd=mysql_query("SELECT IP FROM table2");
for ($i=0; $i<mysql_num_rows($dsd); $i++)
{
$fii=mysql_fetch_array($dsd);
if($ipp==$fii[IP]) $yesx=1;
} // проверка существования ip в бд
if ($yesx!=1){
if(!isset($_SESSION['first2'])) // если такого IP в бд нету и нету сессионной переменной
$lll=mysql_query ("INSERT INTO table2 VALUES ('$ipp','$lastactive','$login')");} // создаем новую запись в бд, если IP нету но сессионная переменная уже есть то ничего не делаем (решает проблему с динамическим IP)
else {
if(isset($_SESSION['first2'])) $lll=mysql_query ("UPDATE table2 SET lastactive='$lastactive', login='$login' WHERE (IP like '$ipp')");// если IP уже существует и переменная существует то апдейтим ластактив и логин
else $lll=mysql_query ("INSERT INTO table2 VALUES ('$ipp','$lastactive','$login')");} //если IP существует но сессионной переменной нет - заводим новую запись в БД (решает проблему с прокси сервером, одним IP у нескольких пользователей)
if(!isset($_SESSION['first2'])) $_SESSION['first2']=1; //заводим сессионную переменную
сам запрос на количество пользователей удаляет всех кто ничего не делал в течении 20 минут
все вроде нормально, но если какому нибудь пользователю взбредет в голову выйти из браузера и зайти заново за 20 минут то в БД будут лишние записи (случай если ip уже есть но сессионной переменной нету) а если не добавлять записи при таком раскладе то не будет решена проблема с пользователями у которых один и тот же IP (прокси сервер)
помогите решить данную проблему
$dsd=mysql_query("SELECT IP FROM table2");
for ($i=0; $i<mysql_num_rows($dsd); $i++)
{
$fii=mysql_fetch_array($dsd);
if($ipp==$fii[IP]) $yesx=1;
} // проверка существования ip в бд
if ($yesx!=1){
if(!isset($_SESSION['first2'])) // если такого IP в бд нету и нету сессионной переменной
$lll=mysql_query ("INSERT INTO table2 VALUES ('$ipp','$lastactive','$login')");} // создаем новую запись в бд, если IP нету но сессионная переменная уже есть то ничего не делаем (решает проблему с динамическим IP)
else {
if(isset($_SESSION['first2'])) $lll=mysql_query ("UPDATE table2 SET lastactive='$lastactive', login='$login' WHERE (IP like '$ipp')");// если IP уже существует и переменная существует то апдейтим ластактив и логин
else $lll=mysql_query ("INSERT INTO table2 VALUES ('$ipp','$lastactive','$login')");} //если IP существует но сессионной переменной нет - заводим новую запись в БД (решает проблему с прокси сервером, одним IP у нескольких пользователей)
if(!isset($_SESSION['first2'])) $_SESSION['first2']=1; //заводим сессионную переменную
сам запрос на количество пользователей удаляет всех кто ничего не делал в течении 20 минут
все вроде нормально, но если какому нибудь пользователю взбредет в голову выйти из браузера и зайти заново за 20 минут то в БД будут лишние записи (случай если ip уже есть но сессионной переменной нету) а если не добавлять записи при таком раскладе то не будет решена проблема с пользователями у которых один и тот же IP (прокси сервер)
помогите решить данную проблему