2017-05-04 85 views
-3

如何禁止用户同时在两个不同的浏览器中使用同一帐户登录。限制会话用户PHP

session_start(); 
// set time-out period (in seconds) 
$inactive = 30; 
if(is_user_logged_in()) { 

if (isset($_SESSION["timeout"])) { 
    // calculate the session's "time to live" 
    $sessionTTL = time() - $_SESSION["timeout"]; 
    if ($sessionTTL > $inactive) { 
     session_destroy(); 
     $redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : '/wordpress'; 
     $location = str_replace('&', '&', wp_logout_url($redirect_to));; 
     header("Location: $location"); 
    } 
    else{ 
     wp_die('<h1>User is login! </h1>', '', array('back_link' => true));  
    } 
} 
} 
+0

我想的数据库,但我几乎可以肯定,有将解决这真的只是许多其他的替代品。 – RepeaterCreeper

+2

在[所以]你应该尝试**自己编写代码**。后** [做更多的研究](//meta.stackoverflow.com/questions/261592)**如果你有问题,你可以**发布你已经尝试**与清晰的解释是什么是'工作**并提供[** Minimal,Complete和Verifiable示例**](// stackoverflow.com/help/mcve)。我建议阅读[问]一个好问题和[完美问题](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要参加[游览]并阅读[this](// meta.stackoverflow.com/questions/347937/)**。 –

+0

只需在用户登录时设置自定义会话密钥并在注销后将其删除 –

回答

0

为此,您需要创建登录记录一个更表中,这些将是场 用户ID islogin(默认值为0)logintime用户代理

如果用户登录该登录每次更新时间。

如果用户尝试登录,那么我们需要检查用户是否登录= 1和登录时间<会话时间。然后死亡;

你需要做的是,在WordPress的我的东西

,所以你需要添加代码过滤器登录功能。 和上初始化更新logintime

感谢

+0

include(“config.inc.php”); $ current_user = wp_get_current_user(); $ id = $ current_user-> ID; (空(is_user_logged_in())) { \t $ sql =“UPDATE preeduc_users SET LoggedIn ='no'WHERE ID = $ id”; mysqli_query($ connecDB,$ sql); } else { \t $ sql =“UPDATE preeduc_users SET LoggedIn ='login'WHERE ID = $ id”; mysqli_query($ connecDB,$ sql); } –

+0

我这样做是为了修改表格中的“LoggedIn”字段,但是当我注销时它不会改变任何东西 –