Доступ к машине ограничен - PullRequest
0 голосов
/ 05 апреля 2010

Я работаю над проектом, который требует, чтобы данные для входа в систему могли быть доступны только с одного компьютера одновременно.

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

Любые предложения о том, как этого добиться, будут полезны. Любые ресурсы, на которые вы можете указать мне, также будут оценены.

Ответы [ 3 ]

0 голосов
/ 05 апреля 2010

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

Но в любом случае, вы можете просто иметь поле IP-адреса в пользовательской таблице, начиная с NULL. Когда кто-то пытается войти в систему, проверьте, является ли это поле для их имени пользователя пустым. Если это так, войдите в систему и установите для них IP-адрес (переменная PHP $_SERVER['REMOTE_ADDR']). Если у него уже был установлен адрес, убедитесь, что IP-адрес, с которого они пытаются войти, совпадает с тем, который хранится там. Если это не так, отклоните регистрацию, даже если имя пользователя / пароль были правильными.

0 голосов
/ 05 апреля 2010

В вашей пользовательской таблице есть дополнительный столбец даты, который называется "logintime".

Если пользователь отправляет имя пользователя / пароль и для этого пользователя нет «времени входа в систему», то разрешите вход в систему после проверки пароля и введите время в «время входа».

Если «logintime» уже установлено, запретить вход.

Сбросьте "время входа в систему", когда оно станет старым (2 месяца в вашем примере).

0 голосов
/ 05 апреля 2010

Ну, с PHP-сессиями это довольно просто.

Использование обработчика сеанса для сохранения данных сеанса в базе данных в формате, подобном:

Session_ID | User_ID | Session_Data | Timestamp

Затем, прежде чем войти в систему, удалите все сеансы с этим идентификатором пользователя


Упс, я неправильно прочитал ваш вопрос. Если вы не хотите разрешать повторный вход в систему, проверьте, существует ли уже сеанс с таким идентификатором пользователя и не истек.

Часть удаления работает, если вы хотите, чтобы второй вход в систему завершил первый вход. Как правило, этот метод используется, потому что тогда никто не должен помнить, чтобы выйти. Если вы входите в систему где-то еще, она просто выходит из того места, где вы вошли последним.

См. PHP session_set_save_handler()

http://us.php.net/manual/en/function.session-set-save-handler.php

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