如何在 CMS PHP 中自动注销非活动用户
Posted
技术标签:
【中文标题】如何在 CMS PHP 中自动注销非活动用户【英文标题】:How to automatically logout an inactive user in your CMS PHP 【发布时间】:2015-08-12 03:44:58 【问题描述】:我正试图从我的 CMS 中强制注销非活动用户。超时值存储在我的数据库中名为 PREF_TIMEOUT 的值中。我借用了这段代码并稍作修改。代码似乎没有做任何事情。有谁知道这样做的更好方法,或者可以发现是什么破坏了它?
<?php
function init()
parent:: init();
self::logoutInactiveUser();
$timeout = mysql_query("SELECT PREF_TIMEOUT FROM preferences WHERE PREF_ID = '1'");
$result = mysql_fetch_array($timeout);
function logoutInactiveUser()
$inactivityLimit = $timeout * 60; // Converted to seconds
$sessionStart = Session::get('session_start_time');
if (isset($sessionStart))
$elapsed_time = time() - Session::get('session_start_time');
if ($elapsed_time >= $inactivityLimit)
$member = Member::currentUser();
if($member) $member->logOut();
Session::clear_all();
Director::redirect(Director::baseURL() . 'Security/login');
Session::set('session_start_time', time());
?>
【问题讨论】:
【参考方案1】:请参考我在链接中的回答:Logout an inactive user using PHP。
根据您当前的代码,问题在于您的查询
$timeout = mysql_query("SELECT PREF_TIMEOUT FROM preferences WHERE PREF_ID = '1'");
$result = mysql_fetch_array($timeout);
位于函数 logoutInactiveUser() 之外,因此变量 $timeout 将没有来自您的数据库的任何数据。将代码移到函数中应该会对您有所帮助。
【讨论】:
以上是关于如何在 CMS PHP 中自动注销非活动用户的主要内容,如果未能解决你的问题,请参考以下文章
如果用户在特定时间内不活动,如何使用 codeigniter 自动注销
当用户在页面 javascript 或 php 中不活动 3 分钟时自动注销