Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2010, 20:06   #1
-MagicAlex-
Пользователь
 
Аватар для -MagicAlex-
 
Регистрация: 28.12.2009
Сообщений: 42
По умолчанию Запрет повторной авторизации на сайте

Для авторизации используются сессии, соответственно сайт "помнит" пользователя с момента авторизации до закрытия браузера. Нужен запрет на повторную авторизацию с другого ПК или просто другого браузера (т.е. если прользователь уже зашел на сайт, то с таким именем и паролем невозможно зайти с другого ПК или другого браузера)

Первое что приходит в голову - это всех кто заходит кидать во временную таблицу в БД и соответственно по этой же таблице проверять всех входящих. Тогда возникает другой вопрос - как определить что юзер закрыл браузер и убрать запись из временной таблицы?
-MagicAlex- вне форума Ответить с цитированием
Старый 18.02.2010, 20:23   #2
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

Можно в табличке, содержащеё данные об аккаунтах завести поле online. Соответственно, если пользователь что-то делает, то заносим в это поле 1. Если он в течении 5 минут ничего не делает, закидываем туда 0.
Если при авторизации оказывается, что у пользователя в этом поле стоит 0, то посылаем его лесом.
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 18.02.2010, 20:25   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Наполовину этот вопрос решается отправкой запроса на сервер при закрытии браузера. Насколько я помню, такое событие есть. Но юзер может отключить яваскрипт. Правда, тогда можно сделать, чтобы вообще нельзя без него работать было
motorway вне форума Ответить с цитированием
Старый 18.02.2010, 20:40   #4
-MagicAlex-
Пользователь
 
Аватар для -MagicAlex-
 
Регистрация: 28.12.2009
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Wicort Посмотреть сообщение
Соответственно, если пользователь что-то делает, то заносим в это поле 1. Если он в течении 5 минут ничего не делает, закидываем туда 0
Тогда получаем другую проблему - необходимость отслеживать действия пользователя
Может быть есть более оптимальное решение? Я думаю многие с такой проблемой сталкивались...
-MagicAlex- вне форума Ответить с цитированием
Старый 18.02.2010, 20:44   #5
Wicort
Форумчанин
 
Аватар для Wicort
 
Регистрация: 04.08.2009
Сообщений: 684
По умолчанию

а что тут отслеживать? при загрузке страниц пишем в базу online = 1
Еслия Вам помог, не поленитесь нажать на весы и оставить отзыв. Это не займет много времени, но даст понять, что я старался не зря =)
Мой ник зарегистрирован, а твой?
Wicort вне форума Ответить с цитированием
Старый 18.02.2010, 21:03   #6
-MagicAlex-
Пользователь
 
Аватар для -MagicAlex-
 
Регистрация: 28.12.2009
Сообщений: 42
По умолчанию

Ну, с предложенным вами решением тоже возникают некоторые вопросы:
1) Например, пользователь авторизоватся (online = 1), подождал 5 минут (online = 0), открыл другой браузер и все равно авторизовался повторно
2) Как отмерить эти 5 минут, не используя CRON?
-MagicAlex- вне форума Ответить с цитированием
Старый 18.02.2010, 23:37   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

я помнится делал так:
при авторизации - генерил случайный md5 отпечаток и записывал в поле uid юзера и в сессию....
при попытке второго захода - uid менялся - и первого пользователя выкидывало )))
так как uid в сессии не совпадал с отпечатком в БД
таким образом осуществлялось единственность входа...
можно немного докрутить под ваш вариант
ADSoft вне форума Ответить с цитированием
Старый 03.03.2010, 02:37   #8
MagicAlex
 
Регистрация: 01.02.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
я помнится делал так:
при авторизации - генерил случайный md5 отпечаток и записывал в поле uid юзера и в сессию....
при попытке второго захода - uid менялся - и первого пользователя выкидывало )))
так как uid в сессии не совпадал с отпечатком в БД
таким образом осуществлялось единственность входа...
можно немного докрутить под ваш вариант
Спасибо большое! Всё гениальное просто
MagicAlex вне форума Ответить с цитированием
Старый 03.03.2010, 14:49   #9
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Цитата:
Сообщение от MagicAlex Посмотреть сообщение
Спасибо большое! Всё гениальное просто
Я лично всегда "перегружаю" сессии. Вручную устанавливаю кукисы, а не через сессии.
Чтобы отмерить время которое пользователь бездействует на сайте - вместо 0/1 в online можно закидывать "unix timestamp". То есть ввёл юзер пароль на сайте первый раз - в таблице сессий записал его логин, хэш (md5 который тебе предложил ADSoft) и время (обыячный штамп времени). Теперь ты знаешь когда пользователь залогинился.
Как только пользователь обновляет страницу - проверяешь когда была его последняя активность. Если более 5-ти минут назад (300 секунд), то обнуляешь его хеш и просишь ввести пароль снова. Если же менее 5 минут, то просто обновляешь штамп времени его последней активности на новый. Кукисы тоже можешь установить на 300 секунд. Хэш позволяет контролировать доступ пользователя с других компьютеров и т.д.
Кстати метка времени в базе не позволит кому-то, кто украл кукисы пользователя, зайти под именем пользователя вне активности пользователя.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 22.10.2012, 05:42   #10
tsprof
Новичок
Джуниор
 
Регистрация: 22.10.2012
Сообщений: 1
Восклицание Запрет повторной авторизации на сайте c CMS Joomla 2.5

Здравствуйте!

Ищу решение проблемки. Сайт на CMS Joomla 2.5.
На сайте есть информация, которая доступна только конкретным пользователям. В итоге, эти пользователи раздают свои логины/пароли друзьям и под одним ником сидят несколько пользователей.
Нужно к корне исправить ситуацию.
Очень хотелось бы, что бы одновременно был зарегистрирован только один пользователь со своим ником. Других не пускал.
Нашел эту тему и надеюсь, что кто-то может помочь. К сожалению, я сам не программист, но судя по сообщениям, эта проблема решаема.

Спасибо.
tsprof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление повторной информации из таблиц paratruper17 Microsoft Office Word 8 03.11.2009 10:31
Комплексный вопрос на тему авторизации на сайте и подтверждению сертификата Anatol_rus Работа с сетью в Delphi 13 15.10.2009 15:44
помогите с повтороной регистрацыей на сайте - там система протв повторной регистрации стоит - как обойти? Emigrant Помощь студентам 5 06.10.2009 14:05
Проблема авторизации на сайте Terikon Работа с сетью в Delphi 0 17.03.2009 16:50
запрет повторной регистрации bllem PHP 12 27.11.2006 10:24