Социальные сети - администратор отключает сеанс других пользователей или какой-либо другой вариант - PullRequest
0 голосов
/ 05 июля 2011

Я создаю свой собственный сайт социальной сети и

Вот случай

, если пользователь рассылает спам или делает какие-то неэтичные вещи, я могу забанить его с помощью опции администратора.Чтобы забанить этого пользователя, я обновляю его запись в базе данных, чтобы он не мог зайти на сайт в следующий раз.Но в дополнение к этому я хочу отключить даже его текущий сеанс и не должен допускать никаких других операций.Может кто-нибудь сказать мне, как отключить сеанс пользователей?Я имею в виду, что пользователь "admin" отключает сеанс "user" (сеанс одного пользователя с другими пользователями)

или какие-либо другие идеи?

Большое спасибо за вашу помощь

Киран

Ответы [ 4 ]

1 голос
/ 05 июля 2011

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

$user_session_id = '...';
$file = glob(session_save_path() . '/*' . $user_session_id . '*');
unlink($file[0]);

Выполнение этого на ваших страницах администратора, когда для флага 'banned' установлено значение true, затем приведет к срыву сеанса пользователя. Это автоматически выводит их из системы. И при следующем входе в систему вы можете отобразить сообщение «вы забанены».

1 голос
/ 05 июля 2011

Если вы отслеживаете сеансы пользователя довольно систематическим образом, например, в базе данных вы можете просто найти все открытые сеансы пользователя и удалить данные сеансов на стороне сервера. Таким образом, пользователь больше не будет считаться «авторизованным» при следующей перезагрузке страницы.

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

0 голосов
/ 05 июля 2011

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

Единственная проблема заключается в том, что вы выполняете поиск по БД на каждой защищенной странице.

0 голосов
/ 05 июля 2011

Если вы отслеживаете сеанс пользователя с помощью имени пользователя, то вы можете забанить его с помощью сеанса.Конечно, вы знаете, что делать в БД, я думаю,

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