Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Два пользователя под одним логином
 
 автор: Bronepoz[)   (11.07.2005 в 09:58)   письмо автору
 
 

Пишу скрипт авторизации, уже почти всё написал, но вот возникла проблема.
При входе не проверяется находится ли этот пользователь online или он только зашёл. То получается что одновременно на сайте могут быть несколько пользователей залогининых как один!
Весь механизм авторизации строится в основном на сессиях. В начале я хотел заносить всех залогининых юзеров заносить в таблицу online. Но если пользователь отрубится не нажимая кнопку выход (у меня есть такая кнопкаб она уничтожает сессию...) то он остаётся в таблице online и в следующий раз он не может залогинится. Подскажите, как мне решить эту проблему?

   
 
 автор: JC_Piligrim   (11.07.2005 в 10:37)   письмо автору
 
   для: Bronepoz[)   (11.07.2005 в 09:58)
 

> Подскажите, как мне решить эту проблему?

При отсутствии активности со стороны пользователя в течении определенного времени убивать сессию и очищать таблицу online. Проверять время последнего запроса КАЖДОГО из пользователей при КАЖДОМ запуске скрипта (если нет crontab'а), и, в случае, если найдены неактивные пользователи - проделывать вышеуказанную операцию.

   
 
 автор: Bronepoz[)   (11.07.2005 в 12:43)   письмо автору
 
   для: JC_Piligrim   (11.07.2005 в 10:37)
 

Я не совсем понял. Как проверять активен он или нет, вернее как проверить время последнего запроса?

   
 
 автор: cheops   (11.07.2005 в 12:46)   письмо автору
 
   для: Bronepoz[)   (11.07.2005 в 12:43)
 

Для этого, при каждом обращении посетителя к страницам Web-приложения необходимо сохранять дату его обращения. Если с момента последнего обращения проходит больше 20 минут (ну или 10) - пользователь ушёл с Web-сайта и его можно удалять из списка On-line.

   
 
 автор: Bronepoz[)   (11.07.2005 в 12:53)   письмо автору
 
   для: cheops   (11.07.2005 в 12:46)
 

Так вот как сделать? Написать функцию которая получает текушую дату и сравнивает её с датой последнего запроса пользователя, и распихать эту фукцию по всем скриптам? Или есть другой вариант?

   
 
 автор: cheops   (11.07.2005 в 13:18)   письмо автору
 
   для: Bronepoz[)   (11.07.2005 в 12:53)
 

У вас как-то регистрируется обращение посетителя к конкретной странице? Наверняка это сделано при помощи функции - можно модифицировать эту функцию, чтобы она за одно и производила сравнение.

   
 
 автор: method   (12.07.2005 в 15:41)   письмо автору
 
   для: cheops   (11.07.2005 в 13:18)
 

файл онлайн юзеров:

Вася 1119604412
Мася 1119604412




<?php
session_start
();
$period 60*5;
$upd=false;
$users file($on_lines);
foreach(
$users as $line){
if(
$line!="\n"){
$user explode(" "$line);
if((
$_SESSION['login']==$user[0])&&(($server_time $user[1]) < $period)){$upd=true;
$user[1] = $server_time;//обновляем время если онлайн в силе
$line implode(" ",$user);
}
unset(
$user);
$buffer .= $line;
}
}
if(
$upd){$fd fopen($on_lines,"w");
fputs($fd,$buffer);
fclose($fd);}
?>


PS:для оффлайн примерно таким же макаром,тока
удалять из списка юзера.
PSS: cheops научил =)

   
 
 автор: OZ_   (16.07.2005 в 23:28)   письмо автору
 
   для: Bronepoz[)   (11.07.2005 в 09:58)
 

А ты убей все сессии, где есть такой логин, перед регистрацией новой сессии (входом).

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования