запретить множественный вход с одинаковыми учетными данными в php - PullRequest
3 голосов
/ 02 июня 2010

На моем сайте есть видео премиум-класса, за которые пользователи должны платить за просмотр. Я отправляю случайное имя пользователя и пароль на электронный адрес пользователя, когда платеж будет завершен. Затем я хочу убедиться, что не более одного пользователя используют эти учетные данные одновременно. Для этого я использую столбец login_status в таблице базы данных с учетными данными для входа и меняю его на 1 при входе одного пользователя и на 0 при выходе пользователя. Но проблема в том, что если пользователь закроет браузер или может произойти потеря сетевого подключения, не будет обновлена ​​база данных. Тогда значение login_status будет равно 1, и никто не сможет снова использовать эти учетные данные для входа.

Есть ли идея выполнить мою задачу?

Ответы [ 3 ]

3 голосов
/ 02 июня 2010

Как насчет того, чтобы записать временную метку в базу данных при входе пользователя в систему. Возможно, у вас есть логика периодически обновлять это значение, если пользователь еще вошел в систему - например, страница может отправлять запрос AJAX каждые 5 минут, чтобы обновить значение или что-то.

Затем, если значение старше определенного порога (скажем, 1 час), вы можете разрешить повторный вход в систему, что, конечно, сбросит отметку времени и запретит доступ кому-либо еще.

1 голос
/ 02 июня 2010

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

Возможно, вы также захотите объединить это с использованием файла cookie с фиксированным (но обновляемым) сроком действия - чтобы пользователи могли возобновить свой сеанс после закрытия браузеров, а не ждать, пока сборщик мусора пожнет сессию с истекшим сроком действия.

С

0 голосов
/ 02 июня 2010

Периодически (ежечасно?) Проходите через базу данных и меняйте все логин_статусов на 0.

Измените его обратно на 1, когда пользователь использует сайт по какой-либо причине.

Таким образом, никто не будет заблокирован более чем на 1 час за один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...