零基础学做网站培训介绍

当前位置:

WordPress 如何禁止一个账号同时多人登录

本课程视频是VIP会员课程,学习请进入VIP学习区

使用过DISCUZ做论坛的学员都知道,DISCUZ论坛有一个功能就是可以禁止一个账号同时多人登录。如果一个账号登录了,别人再登录就会自动退出另一个人的登录。这在一些带会员功能的网站上有非常实用的意义。

那么对于WordPress网站,也是有这样的功能的,通代码可以检测到网站的一个账号是否有多人同时登录,如果有的话,就会将前面登录的用户退出。实现方法如下:

第一种方法:插件法

通过安装禁止多人登录插件  Wp Single Login 来实现这样的功能。直接在网站后台插件安装界面搜索 Wp Single Login 即可在线安装启用即可,不需要任何的设置。

第二种方法:代码法

如果你不想用插件,或者想自定义某些代码,可以使用下面的代码,将下面的代码复制到你的网站模板函数文件functions.php里,保存即可。


<?php
/*
Plugin name: WP Single Login
Plugin URI: http://magnigenie.com/wp-single-login/
From: https://www.xuewangzhan.net/
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 = __( "您的账号在其它地方登录,此处已强制下线!" ) ;
$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();
}
?>

发表评论

邮箱地址不会被公开。 必填项已用*标注

相关教程

  • 漂亮的wordpress淘客模板 图文教程 (17951 次浏览)
    今天再次给大家分享一款自己仿的一个wordpress淘客模板。这个模板是我自己在别人模板的基础上进行二次开发,自己比较喜欢。注意:此模板不支持IE6,
  • 用什么建网站?Wordpress建网站好不好?这些问题经常被新手问上问起。可以这样说,wordpress程序可以建各种类型的网站,它的功能强大之处令人称赞,
  • Wordpress 如何开启伪静态 视频教程 (1114476 次浏览)
    做网站制作好之后,如果网站做SEO优化时,需要进行伪静态的设置,同样也可以通过网站设置选置进行设置。Wordpress伪静态设置方法 登陆到wordpre
  • 我们在用WORDPRESS建网站时,通过后台上传图片,上传一张图片会自动生成三张尺寸的图片,分别是在图片名称的后面加上了-150X150等等诸如此类 的3种图
  • 很多站长使用DISCUZ做网站后,将一些收费资源放在论坛里。为了防止收费会员帐号被多人同时重复登录,可以设置Discuz同一帐号禁止多人重复登录。
  • 我们在制作手机网站时,如果网页上有一串数字的话,手机网站会自动给这串数字添加电话号码的链接。(相关知识:怎么做手机网站?)这样用户只要点一下
  • 淘宝APP账号配置 (111380 次浏览)
    申请APPkey第一步:打开 my.open.taobao.com/xtao/createWebsite.htm 填写网站名称和网址。申请APPkey第二步:下载网站验证文件 xtao
  • 学做网站论坛vip账号是VIP学员身份重要证明依据,VIP学员可以使用学做网站论坛vip账号登录VIP学习区,学习会员课程。并且享受讲师在线辅导服务。
  • 近期,学做网站论坛有一个使用DISCUZ建论坛网站的学员,遇到这样的问题:自己的论坛网站由于大量的垃圾用户,在后台删除时,不小心把论坛的管理
  • 在学习做网站的基础课程中,我们就讲到网站空间是做网站必备的,由于网站空间是存放网站程序的位置。那么是不是对于一些新手去买一个网站空间只能建一
  • 问题:老师,我现在是一个主机俩个域名,安装完一个就无法使用另一个域名了,这个是要怎么解决呀?怎么让二个域名都可以访问这个网站呢?回复
  • 对于支持同时建立多个网站的网站空间,我们可以给一个网站绑定多个独立域名建立多个不同的网站。下面学做网站论坛介绍一下一个空间怎么同时建立多个网
  • 使用过DISCUZ做论坛的学员都知道,DISCUZ论坛有一个功能就是可以禁止一个账号同时多人登录。如果一个账号登录了,别人再登录就会自动退出另一个人的登
  • 之前有很多建网站学员反映,自己学习了wordpress教程,制作了网站,但有时会碰到wordpres后台无法登录,密码确认无误,空间没有问题,之前也成功登录
  • 使用wordpress程序建网站的学员,总是容易出现错误,而且有些错误会让你手足无措。比如你修改了网站的地址。当你把wordpress程序站点地址改掉,然
  • 有些学员在做了自己的网站之后,有时碰到了登录网站后台登录不进去的情况,这是什么原因造成的呢?我们在课程里讲到期wp网站的后台登录方法是:ht