首页建站经验 WordPress教程:禁止多个人同时登录一个用户账号

WordPress教程:禁止多个人同时登录一个用户账号

关于 WordPress 禁止多个人同时登录一个用户账号,倡萌之前就推荐过 Prevent Concurrent Logins ,今天推荐的 Wp Single Login 也可以实现一样的功能,不过 Wp Single Login 是通…

关于 WordPress 禁止多个人同时登录一个用户账号,倡萌之前就推荐过 Prevent Concurrent Logins ,今天推荐的 Wp Single Login 也可以实现一样的功能,不过 Wp Single Login 是通过 WP 3.6 新增的 Heartbeat API 来实现的。

后台插件安装界面搜索 Wp Single Login 即可在线安装,或者在这里下载 Wp Single Login ,直接安装启用即可,不需要设置。

当然,如果你不想用插件,或者想自定义某些代码,以下就是该插件的源代码:

<?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 = '

'.$msg.'


';

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() { ?>

<?php

}

}

new wp_single_login();

}

以上就是本文章的内容,希望对大家有所帮助

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/19043.html
上一篇让ecshop购买商品时支持输入数量为小数
下一篇 WordPress首页不显示指定栏目的内容
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部