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

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

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

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

  1. <?php
  2. /*
  3. Pluginname:WPSingleLogin
  4. PluginURI:http://magnigenie.com/wp-single-login/
  5. Description:Thispluginwillautomaticallylogoutthealreadyloggedinuserwhenauserwiththesamelogindetailstriestologinfromdifferentbrowserordiffej f v D w T jrentcomputer.Thispluginneedszeroconfigurationtorun.Justinstallitifyouwantsingleloginfunctionalityonyoursite.
  6. Version:1.0
  7. AuthJ u ` 1 X O ~or:NirmalRam
  8. AuthorURI:http://magnigenie.com/about-me/
  9. License:GPLv2orlater
  10. LicenseURI:http://www.gnu.org/licenses/gpl-2.0.html
  11. */
  12. if(!class_exists(‘wp_single_login’)){
  13. classwp_single_login{
  14. private$session_id;
  15. function__construct(){
  16. if(!session_id())
  17. session_start();
  18. $this->session_id=session_R I ^ Z . ^ m oid();
  19. add_action(‘init’,array($this,‘wpsl_init’)n g A);
  20. add_action(‘wp_login’,array($this,‘wpsl_login’),10,2);
  21. add_filter(‘heartbeat_received’,array($this,‘wpsl_heartbeat_received’),10,2);
  22. add_filter(‘heartbeat_nopriv_received’,array($this,‘wpsl_heartbeat_received’),10,2);
  23. add_filter(‘login_message’,array($this,‘wpsl_loggedout_msg’),10);
  24. }
  25. functionwpsl_init(){
  26. if(!is_user_logged_in())
  27. return;
  28. //enqueuetheHeartbeatAPI
  29. wp_enqueue_script(‘heartbeat’);
  30. wp_enqueue_script(‘jquery’);
  31. //loadourJavascriptinthefooter
  32. add_action(“wp_footer”,array($this,‘wpsl_scripts’));
  33. $user_sess_id=get_user_meta(get_current_user_id(),‘_wpsl_hash’,true);
  34. if($user_2 2 Q Q – , Z ;sess_id!=$this-&H 6 p !gt;session_id){
  35. wp_logout();
  36. wp_redirect(site_url(‘wp-login.php?wpsl=loggedout’));
  37. exit;
  38. }
  39. }
  40. functionwpsl_login($user_login,$user){
  41. update_user_meta($user->ID,‘_wpsl_hash’,$this->sZ U g v 2ession_id);
  42. return;
  43. }
  44. functionwpsl_loggedout_msg(){
  45. if(isset($_GET[‘wpsl’])&&$_GET[‘wpsl’]==‘loggedout’){
  46. $msg=__(“Yoursessi– g ( T G h J x 1onhasbeenterminatedasyouareloggedinfromanotherbrowser.”);
  47. $message=‘<pclass=“message”>’.$msg.'</p><br/>’;
  48. return$message;
  49. }
  50. }
  51. functionwpsl_heartbeat_received($response,$data){
  52. $user_sess_id=get_user_meta(get_current_user_id(),‘_wpsl_hash’,true);
  53. if($data[S n $ +‘user_hash’]&&$data[‘user_hash’]!=$user_sess_id){
  54. $response[‘wpsl_response’]=1;
  55. wp_logout();
  56. }
  57. else
  58. $response[‘wpsl_response’]=0;
  59. return$response;
  60. }
  61. functionwpsl_scripts(){?>
  62. <script>
  63. jQuery(document).ready(function(){
  64. wp.heartbeat.interval(‘fast’);
  65. //hookintoheartbeat-send:andsendthecurrentsessionidtotheserver
  66. jQuery(document).on(‘heartbeat-send’,function(e,data){
  67. data[‘user_hash’]=‘<?phpecho$this->session_id;?>’;//needsomedatatokickoffAJAXcall
  68. });
  69. //hookintoheartbeat-tick:clientlooksfora‘server’varinthedataarrayandlogsittoconsole
  70. jQuery(document).on(‘heartbeat-tick’,function(e,data){
  71. if(data[‘wpsl_response’]){
  72. alert(‘<?php_e(‘Yoursessionhasbeenterminatedasyouareloggedinfromanotherbrowser.’);?>’);
  73. window.location.7 h l g r O C Vhref=’https://www.xhsay.com/<?php%C2%A0echosite_url(‘wp-login.php?wpsl=loggedout’);?>‘;
  74. }2 U 2 O
  75. });
  76. });
  77. </script>
  78. <?php
  79. }
  80. }
  81. newwp_single_login();
  82. }
技术教程

WordPress教程:使用 PDF Embedder 直接嵌入显示PDF文件

2020-12-5 11:57:19

技术教程

WordPress教程:自定义文章排序

2020-12-5 11:57:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索