许多 WordPress 都是开放注册的,又有不少的站点是在做交易站点,可以进行购买实物在线交易的,在线交易的站点往往是禁止同一个帐号多人使用的,而在 WordPress 中是没有限制的,也就是说一个帐号可以进行共享,然后多人同时重复登录的,这给交易带来了困难,也带来一定的安全问题。
而对于如何禁止同一个注册帐号同时重复登录的问题,有简单的插件来实现,如:Prevent Concurrent Logins 或 Wp Single Login,这 2 个插件都不需多余设置,任选其一安装启用即可。
当然,不想用插件的话,也可以通过在 functions.php 中添加如下代码(来自上面的插件 Prevent Concurrent Logins)的方法来解决这个问题:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/**
* WordPress 禁止多个人登录同一用户帐号
*
*/
functionpcl_user_has_concurrent_sessions(){
return(is_user_logged_in()&&count(wp_get_all_sessions())>1);
}
//用户当前会话数组
functionpcl_get_current_session(){
$sessions=WP_Session_Tokens::get_instance(get_current_user_id());
return$sessions->get(wp_get_session_token());
}
//如果用户会话更新则销毁其他会话
functionpcl_disallow_account_sharing(){
if(!pcl_user_has_concurrent_sessions()){
return;
}
$newest=max(wp_list_pluck(wp_get_all_sessions(),‘login’));
$session=pcl_get_current_session();
if($session[‘login’]===$newest){
wp_destroy_other_sessions();
}else{
wp_destroy_current_session();
}
}
add_action(‘init’,‘pcl_disallow_account_sharing’);
|