许多 WordPress 都是开放注册的,又有不少的站点是在做交易站点,可以进行购买实物在线交易的,在线交易的站点往往是禁止同一个帐号多人使用的,而在 WordPress 中是没有限制的,也就是说一个帐号可以进行共享,然后多人同时重复登录的,这给交易带来了困难,也带来一定的安全问题。
而对于如何禁止同一个注册帐号同时重复登录的问题,有简单的插件来实现,如:Prevent Concurrent Logins 或 Wp Single Login,这 2 个插件都不需多余设置,任选其一安装启用即可。
当然,不想用插件的话,也可以通过在 functions.php 中添加如下代码(来自上面的插件 Prevent Concurrent Logins)的方法来解决这个问题:
/**
* WordPress 禁止多个人登录同一用户帐号
* 龙笑天下 https://www.ilxtx.com/prevent-concurrent-logins-or-wp-single-login.html
*/
function lxtx_user_has_concurrent_sessions() {
return ( is_user_logged_in() && count( wp_get_all_sessions() ) > 1 );
}
//用户当前会话数组
function lxtx_get_current_session() {
$sessions = WP_Session_Tokens::get_instance( get_current_user_id() );
return $sessions->get( wp_get_session_token() );
}
//如果用户会话更新则销毁其他会话
function lxtx_disallow_account_sharing() {
if ( ! lxtx_user_has_concurrent_sessions() ) { return; }
$newest = max( wp_list_pluck( wp_get_all_sessions(), 'login' ) );
$session = lxtx_get_current_session();
if ( $session['login'] === $newest ) {
wp_destroy_other_sessions();
} else {
wp_destroy_current_session();
}
}
add_action('init', 'lxtx_disallow_account_sharing');
还没有人赞赏,快来当第一个赞赏的人吧!
声明:本文为原创文章,版权归龙笑天下所有,欢迎分享本文,转载请保留出处!