我的网站需要会话超时。
当我在所有控制器的所有功能中添加它时,我的当前代码有效。
有没有办法只写一次并将其包含在所有控制器中?
-in配置文件,包含URL&会话检查左右?
我的代码有效:
if(isset($_SESSION['timeout']) && $_SESSION['timeout'] + 4 < time()) //4 seconds
{
session_destroy();
echo "<script>
alert('Session Timed Out.');
</script>";
?> <script> window.location ="<?php echo URL;?>"; </script> <?php
}
$_SESSION['timeout'] = time();
当我在所有控制器的所有功能中添加此代码时,上面的代码可以正常工作。 但我需要一个页面代码。
答案 0 :(得分:1)
你需要在破坏之前启动会话
在配置文件中使用以下代码
session_start();
if(isset($_SESSION['timeout']) && $_SESSION['timeout'] + 4 < time()) //4 seconds
{
session_destroy();
echo "<script>
alert('Session Timed Out.');
</script>";
?> <script> window.location ="<?php echo URL;?>"; </script> <?php
}
$_SESSION['timeout'] = time();
并从控制器文件中删除session_start。它应该工作,我在我的localhost上测试它
修改
要排除登录页面,请使用以下代码 假设您的登录页面网址包含“登录”,请根据您的登录页面URL修改$ string
$string = "login";
$url = $_SERVER['REQUEST_URI'];
session_start();
if(isset($_SESSION['timeout']) && $_SESSION['timeout'] + 4 < time() && !strpos($url, $string)) //4 seconds
{
session_destroy();
echo "<script>
alert('Session Timed Out.');
</script>";
?> <script> window.location ="<?php echo URL;?>"; </script> <?php
}
$_SESSION['timeout'] = time();
答案 1 :(得分:0)
将此代码置于通用或配置php文件
<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
答案 2 :(得分:0)
您可以使用
设置会话参数session_set_cookie_params http://php.net/manual/en/function.session-set-cookie-params.php