2013-02-21 5 views
2

Многие веб-сайты, которые я создал, содержат пользовательские данные, хранящиеся в сеансах для быстрого доступа. Проблема заключается в том, что если администратор решает удалить или отключить учетную запись пользователя, если у них есть файлы cookie сеанса, они по-прежнему технически «вошли в систему».Завершение сеанса при удалении учетной записи

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

Итак, мой вопрос в том, есть ли способ закрыть сеанс для пользователя от другого пользователя на основе данных, хранящихся в упомянутом сеансе, например, идентификатора пользователя? Если нет, то когда будет считаться небезопасным использовать данные сеанса внутри страны, без проверки базы данных?

Следует отметить, что этот вопрос задается в предположении, что я буду использовать встроенную переменную $ _SESSION, а не какую-то специальную реализацию базы данных, поскольку сеанс базы данных будет довольно легко отслеживать.

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

+0

Вы можете попробовать использовать код сервера, чтобы предоставить вам доступ к тому, что вам нужно, и позволить серверу связываться между сеансом и идентификатором пользователя. После того, как у вас есть эта информация, код сервера должен помочь вам сделать то, что вам нужно. –

+1

Вы посмотрели на получение всех сообщений: http://stackoverflow.com/questions/1248008/session-list-in-php И как убить определенный сеанс: http://stackoverflow.com/questions/ 6730123/how-to-destroy-a-specific-php-session –

+1

Первая ссылка, по-видимому, предполагает использование встроенной СЕССИИ, а вторая предполагает пользовательский дизайн сеанса базы данных. Возможно, использование дизайна базы данных идеально. Есть ли какое-либо преимущество в использовании сеанса базы данных только для проверки его через БД каждый раз? – Ecksters

ответ

1

Попробуйте использовать следующие достижения того, что вы ищете:

+0

Первая ссылка - это в значительной степени то, что мне нужно (как искать идентификатор сеанса на основе данных, хранящихся в сеансе), но ответ второй ссылки утверждает, что это должно быть сделано с использованием метода пользовательской базы данных. Другой ответ говорит об использовании 'session_id ($ sessionID);', это то, о чем вы говорите? Потому что я думаю, что это может сработать. Я просто не уверен, как найти идентификатор, о котором идет речь, на основе первой ссылки. – Ecksters

0

Вы можете использовать session_destroy в конце процесса, но, кроме того:

Для того, чтобы убить сессию в целом, как для входа пользователя вне, идентификатор сессии должен быть также снята с охраны [и], а затем файл cookie сеанса должен быть удален.

В качестве побочного примечания: «Хорошая» информация о документации по PHP - это вы, как, гарантированный смех.

+0

Вы, кажется, неправильно поняли вопрос. Я пытаюсь удалить сеанс, для которого пользователь, выполняющий удаление, не имеет файлов cookie. Другими словами, позволяя одному пользователю удалять сеанс другого пользователя. – Ecksters

+0

И это дает вам такой ответ. –

+0

Если я администратор, и я удаляю пользователя «Боб», использование session_destroy удалит мой сеанс, а не сеанс, доступ к которому куки на компьютере Боба. Если я чего-то не хватает, документация не отвечает на мой вопрос. – Ecksters

1

Вы пытались session_destroy?

Session Destory

+0

«Кажется, вы неправильно поняли вопрос. Я пытаюсь удалить сеанс, для которого пользователь, выполняющий удаление, не имеет файлов cookie для. Другими словами, позволяет одному пользователю удалять сеанс другого пользователя». – Ecksters

0

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

+0

Я не могу удалить их файлы cookie, конечно, но я должен уметь удалить данные сеанса на моем сервере, на которые ссылаются их файлы cookie. – Ecksters

Смежные вопросы