2010-10-20 4 views
1

У меня есть этот вопрос. Мой веб-сайт создается, когда пользователь может находиться только на странице участника, если у него есть логин. Поэтому каждая страница имеет это,Сессия PHP. Как администратор может уничтожить сеанс пользователя

если (! $ _ SESSION [ «идентификатор пользователя»]) заголовок index.php

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

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

ответ

1

Что я сделал - это создать запрос базы данных в файле заголовка, который включен в каждую страницу, которая либо тянет профиль пользователей, либо проверяет, были ли они запрещены. Если да, то I destroy their session.

+0

Проблема что если пользователь не изменит страницу, и он продолжит публикацию материалов, он все равно будет работать, btw i post через ajax, поэтому страница не обновляется. – john

+0

@john вы можете публиковать через ajax, но ваш аякс по-прежнему вызывает страницу .php, не так ли? – Bot

0

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

0

Если вы не используете каталог многоуровневого метода сохранения, что-то вроде этого, вероятно, будет достаточно:

unlink(ini_get('session.save_path') . 'sess_' . $bannedSessionID)); 

проверьте, что файлы сеансы вашего сервера имеют префикс «sess_», хотя. Его можно было бы где-то переопределить. Но в любом случае по умолчанию все файлы сеанса находятся в одном каталоге (/ tmp, если только они не были перемещены) и могут быть открыты/прочитаны/записаны/удалены на веб-сервере (как и должно быть)

+0

Как узнать, какой $ bannedSessionID запретить конкретный пользователь – john

+0

Ваша система входа в систему должна где-то хранить идентификатор сеанса пользователя. Это или если вы храните что-то лично идентифицируемое в файле сеанса (имя пользователя, полное имя и т. Д.), Вы можете grep через все файлы сеанса найти тот, который связан с пользователем. –

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