eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

wp_destroy_other_sessions()WP 4.0.0

Удаляет все активные сессии, кроме текущей из БД, у текущего пользователя.

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

  • Используйте wp_destroy_all_sessions(), когда нужно удалить все сессии текущего пользователя.

  • Используйте wp_destroy_current_session(), когда нужно удалить текущую сессию пользователя.
Работает на основе: WP_Session_Tokens::destroy_others()

Хуков нет.

Возвращает

null. Ничего (null).

Использование

wp_destroy_other_sessions();

Примеры

0

#1 Форсированная поддержка только одной сессии

В этом примере для текущего пользователя проверяются все его активные сессии. Если найдена сессия с токеном, отличным от текущего, все остальные сессии завершаются.

if ( is_user_logged_in() ) {
	$current_token = wp_get_session_token();
	$all_sessions = wp_get_all_sessions( get_current_user_id() );

	foreach ( $all_sessions as $token => $session_data ) {
		// Если найдена другая сессия, завершаем её
		if ( $token !== $current_token ) {
			wp_destroy_other_sessions();
			break;
		}
	}
}

Список изменений

С версии 4.0.0 Введена.

Код wp_destroy_other_sessions() WP 6.8.1

function wp_destroy_other_sessions() {
	$token = wp_get_session_token();
	if ( $token ) {
		$manager = WP_Session_Tokens::get_instance( get_current_user_id() );
		$manager->destroy_others( $token );
	}
}
2 комментария