2013-05-03 49 views
4

我想写一个自动logout脚本似乎工作,但不符合我的期望,我不知道究竟是什么做错了,我想把timeout.php在每一页上,以便当用户空闲时,它会自动注销并重定向到login页面,但是当我将timeout.php设置为管理员添加用户的添加用户页面时,它将覆盖添加用户页面的链接并放置一个也不是出来很好(即形式正在摆脱其位置)it looks like this创建一个自动注销页面在php

这是timeout.php代码

<?php 
$_SESSION = 0; 
if($_SESSION['session_count'] == 0) { 
$_SESSION['session_count'] = 1; 
$_SESSION['session_start_time']=time(); 
} else { 
$_SESSION['session_count'] = $_SESSION['session_count'] + 1; 
} 

$session_timeout = 10; // (in sec) 

$session_duration = time() - $_SESSION['session_start_time']; 
if ($session_duration > $session_timeout) { 
session_unset(); 
session_destroy(); 
session_start(); 
session_regenerate_id(true); 
$_SESSION["expired"] = "yes"; 
header("Location: login.php"); // Redirect to Login Page 
} else { 
$_SESSION['session_start_time']=time(); 
} 
?> 

我希望它会自动注销和自身重定向到登录页面的消息yoour会话已过期,我希望它把它的每一页上没有它干扰形式或重叠的页面

+4

你有没有试过使用轮询javascript来检查重定向之前的活动(如滚动和鼠标点击)?无论如何,我建议你查看[this](http://paulirish.com/2009/jquery-idletimer-plugin/)插件。 – 2013-05-03 06:45:07

回答

0

这可能与问题无关:为什么在if-tag中使用$_SESSION["expired"] = "yes";?如果你不使用它,我没有看到设置会话变量的重点。 (也许你在其他地方使用它,我不知道)。

此外,你确定你的重定向是正确的吗? 尝试echo header("Location: login.php"); 这应该可以帮助您检查您的重定向是否至少正确。

如果不是这样:请检查您是否已正确添加用户页面上的timeout.php链接。 (例如:想象你在添加用户页面上使用if-else,它应该在你的if-tag中,但是你在你的else标签中使用它)