Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как запретить вход в систему с одним и тем же логином в одно и тоже время с разных компьютеров?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Подскажите пожалуйста, как сделать, чтобы невозможно было войти в систему с одним и тем же логином в одно и тоже время с разных компьютеров.
heeler
Отправлено: 07 Января, 2009 - 15:05:25
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




У меня следующая ситуация, на самом деле Smile

Для того, чтобы избежать параллельной авторизации под одной и той же учёткой, я при авторизации проверяю, если такая запись в таблице БД, и если нет, вношу запись с логином пользователя в таблицу, а когда он нажимает выход - удаляю оттуда эту запись.
А вот если он просто закроет браузер, запись, соответственно останется.

Может быть, данный способ блокирования параллельной авторизации вообще не оптимальный...
Подскажите, пожалуйста, как сделать лучше?
 
 Top
Гость
Отправлено: 07 Января, 2009 - 16:00:25
Post Id


УДАЛЁН










1. Мождно установить некоторое ограничение на время жизни сессионой куки например 10 минут Когда пользователь хожит по станицам сайта по эта кука обновляется чтобы 10 минут не истекло (Можно сделать чтоб обновлялась ипока страниица открытп AJAX-запросом например) Также все это класть в БД с информаией о времени последнего обновления И если 10 минут небыло никаких действий сниать авторизацию
2. Тупо сделать - кто посмледним зашел тому и авторизация (Как во многих почтовиках) и не запариваться
 
 Top
heeler
Отправлено: 07 Января, 2009 - 16:26:10
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




JustUserR пишет:
1. Мождно установить некоторое ограничение на время жизни сессионой куки например 10 минут Когда пользователь хожит по станицам сайта по эта кука обновляется чтобы 10 минут не истекло (Можно сделать чтоб обновлялась ипока страниица открытп AJAX-запросом например) Также все это класть в БД с информаией о времени последнего обновления И если 10 минут небыло никаких действий сниать авторизацию
2. Тупо сделать - кто посмледним зашел тому и авторизация (Как во многих почтовиках) и не запариваться


А как через 10 минут инициализировать проверку на обновление данных в БД? Ведь никакой скрипт пользователем запущен не будет...
 
 Top
Гость
Отправлено: 07 Января, 2009 - 16:41:09
Post Id


УДАЛЁН










Цитата:
А как через 10 минут инициализировать проверку на обновление данных в БД? Ведь никакой скрипт пользователем запущен не будет...
1. Можно запустить PHP-скрипт Cronом который будет проверять все что надо
2. Все гораздо проще. Итак в БД есть последнее варемя работы даного пользователя с опеределнного аккаунта. И когда этот аккаунт заходит в следующзий раз мы сравниваем текущее время и то что в БД и если прошло более 10 минут то сразу же удаям запись из БД и предлагаем авторизацию занво
Минусы: В течегие 10 минут пользователь с другого Ip-адреса (Или компа если использовались куки) не сможет войти
Плюсы: Если пользователь вновь шашел с того же компа менее чем через 1- минут ему не придется снова авторизироваться
 
 Top
heeler
Отправлено: 07 Января, 2009 - 17:47:53
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Спасибо! Теперь разобрался и почти сделал...

Подскажите пожалуйста ещё, как разницу между двумя переменными с датой и временем вычислить?

У меня
CODE (text):
скопировать код в буфер обмена
  1. $last_visit - date('Y-m-d H:i:s');

CODE (text):
скопировать код в буфер обмена
  1. $last_visit = 2009-01-07:34:44
  2. date('Y-m-d H:i:s') = 2009-01-07 18:46:07

Вроде по типу одинаковые... А разница 0.
Что я не так делаю и как надо?
Помогите, пожалуйста.
 
 Top
Champion Супермодератор
Отправлено: 07 Января, 2009 - 17:53:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




а сколько будет
$r = 'арбуз' - 'зебра'; ?

А вообще, sql есть date_sub
 
 Top
heeler
Отправлено: 07 Января, 2009 - 17:55:21
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Champion пишет:
а сколько будет
$r = 'арбуз' - 'зебра'; ?

А вообще, sql есть date_sub


Ну не работал я никогда с датами в РНР Что такое?
 
 Top
Champion Супермодератор
Отправлено: 07 Января, 2009 - 17:57:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Это не даты, это строки
 
 Top
heeler
Отправлено: 07 Января, 2009 - 18:01:32
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Champion пишет:
Это не даты, это строки

Вот оно что? Т. е. надо их к датам преобразовать как-то? Это возможно?
 
 Top
Champion Супермодератор
Отправлено: 07 Января, 2009 - 18:04:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




в php дат нет. Но, если вам надо есть целые числа (функции mktime и учздщву вым тут пригодятся). А проще
Champion пишет:
А вообще, sql есть date_sub
 
 Top
heeler
Отправлено: 07 Января, 2009 - 18:07:26
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




Champion пишет:
в php дат нет. Но, если вам надо есть целые числа (функции mktime и учздщву вым тут пригодятся). А проще
Champion пишет:
А вообще, sql есть date_sub


Не могу я что-то понять как date_sub работает?
Вроде посмотрел примеры - там какие-то другие ситуации или я что-то не так искал Недовольство, огорчение
Как date_sub тут использовать?
 
 Top
valenok Модератор
Отправлено: 07 Января, 2009 - 18:40:29
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Кто последний - тот и папа
Я бы записывал в базу логин + ip + id сессии
При авторизации старую запись просто перетирал бы.
На каждой странице проверял авторизован ли пользователь сверяя всю тройку с бд
таким образом онлайн будет только один человек пользующийся одним аккаунтом, причём это будет последний вошедший.

Не пускать пока ктото под этим именем онлайн
Как сделать так, чтоб ктото не мог войти пока другой онлайн - я предположу сказать что никак, ибо онлайн это понятие относительное (время последнего действия).
И пользователь мог спокойно нажать на крестик и ты в этом случае будешь не пускать кого-то просто так 10 минут.
Может к примеру сгодится для трекеров, но явно не как защита от передачи пароля

Передача пароля - можно всё таки записывать последнее действие пользователя, в добавок к первому способу. Если при авторизации, когда перетирается старая запись
если изменился ip И так же последнее действие пользователя было меньше чем 25 минут назад - возможно дело в передаче.
Хотя не забывай что за 25 минут можно пересесть за другой комп.

(25 минут стандартное время жизни сессионной куки если не до закрытия браузера)


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB