文章最后更新时间:
关于 WordPress 禁止多个人同时登录一个用户账号,倡萌之前就推荐过 Prevent Concurrent Logins ,今天推荐的 Wp Single Login 也可以实现一样的功能,不过 Wp Single Login 是通过 WP 3.6 新增的 Heartbeat API 来实现的。文章源自奇客源码-https://www.qkget.cn/1611.html
后台插件安装界面搜索 Wp Single Login 即可在线安装,或者在这里下载 Wp Single Login ,直接安装启用即可,不需要设置。文章源自奇客源码-https://www.qkget.cn/1611.html
2020年6月测试:已测试该插件兼容至 WordPress 5.4.2,后续版本是否兼容,大家自己测试。文章源自奇客源码-https://www.qkget.cn/1611.html
当然,如果你不想用插件,或者想自定义某些代码,以下就是该插件的源代码:文章源自奇客源码-https://www.qkget.cn/1611.html
<?php
/*
Plugin name: WP Single Login
Plugin URI: http://magnigenie.com/wp-single-login/
Description: This plugin will automatically logout the already logged in user when a user with the same login details tries to login from different browser or different computer. This plugin needs zero configuration to run. Just install it if you want single login functionality on your site.
Version: 1.0
Author: Nirmal Ram
Author URI: http://magnigenie.com/about-me/
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
if( !class_exists( 'wp_single_login' ) ) {
class wp_single_login {
private $session_id;
function __construct() {
if ( ! session_id() )
session_start();
$this->session_id = session_id();
add_action( 'init', array( $this, 'wpsl_init' ) );
add_action( 'wp_login', array( $this, 'wpsl_login' ), 10, 2 );
add_filter('heartbeat_received', array( $this, 'wpsl_heartbeat_received' ), 10, 2);
add_filter('heartbeat_nopriv_received', array( $this, 'wpsl_heartbeat_received' ), 10, 2);
add_filter( 'login_message', array( $this, 'wpsl_loggedout_msg' ), 10 );
}
function wpsl_init() {
if( ! is_user_logged_in() )
return;
//enqueue the Heartbeat API
wp_enqueue_script('heartbeat');
wp_enqueue_script('jquery');
//load our Javascript in the footer
add_action("wp_footer", array( $this, 'wpsl_scripts' ) );
$user_sess_id = get_user_meta( get_current_user_id(), '_wpsl_hash', true );
if( $user_sess_id != $this->session_id ) {
wp_logout();
wp_redirect( site_url( 'wp-login.php?wpsl=loggedout' ) );
exit;
}
}
function wpsl_login( $user_login, $user ) {
update_user_meta( $user->ID, '_wpsl_hash', $this->session_id );
return;
}
function wpsl_loggedout_msg() {
if ( isset($_GET['wpsl']) && $_GET['wpsl'] == 'loggedout' ) {
$msg = __( "Your session has been terminated as you are logged in from another browser." ) ;
$message = '<p class="message">'.$msg.'</p><br />';
return $message;
}
}
function wpsl_heartbeat_received($response, $data) {
$user_sess_id = get_user_meta( get_current_user_id(), '_wpsl_hash', true );
if( $data['user_hash'] && $data['user_hash'] != $user_sess_id ){
$response['wpsl_response'] = 1;
wp_logout();
}else{
$response['wpsl_response'] = 0;
}
return $response;
}
function wpsl_scripts() { ?>
<script>
jQuery(document).ready(function() {
wp.heartbeat.interval( 'fast' );
//hook into heartbeat-send: and send the current session id to the server
jQuery(document).on('heartbeat-send', function(e, data) {
data['user_hash'] = '<?php echo $this->session_id; ?>'; //need some data to kick off AJAX call
});
//hook into heartbeat-tick: client looks for a 'server' var in the data array and logs it to console
jQuery(document).on( 'heartbeat-tick', function( e, data ) {
if( data['wpsl_response'] ){
alert( '<?php _e('Your session has been terminated as you are logged in from another browser.'); ?>' );
window.location.href='<?php echo site_url( 'wp-login.php?wpsl=loggedout' ); ?> ';
}
});
});
</script>
<?php
}
}
new wp_single_login();
}文章源自奇客源码-https://www.qkget.cn/1611.html© 版权声明
网站名称:奇客源码
本文链接:
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
本站资源仅供个人学习交流,转载时请以超链接形式标明文章原始出处,(如有侵权联系删除)
本文链接:
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可
本站资源仅供个人学习交流,转载时请以超链接形式标明文章原始出处,(如有侵权联系删除)
本站代码模板仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END











子比主题美化
精品源码资源

暂无评论内容