如何在所有控制器中包含会话超时?
How to include Session Timeout in all controllers?
我的网站需要一个会话超时。
当我将当前代码添加到我所有控制器的所有函数中时,我的当前代码可以正常工作。
有没有办法只写一次并包含在所有控制器中?
-在带有 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();
当我将它添加到我所有控制器的所有函数中时,上面的代码有效。
但是我需要一个单页代码。
将此代码放在通用或配置 php 文件中
<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
您可以使用
设置会话参数
session_set_cookie_params http://php.net/manual/en/function.session-set-cookie-params.php
您需要先启动会话才能销毁它
在您的配置文件中使用以下代码
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。它应该可以工作,我在我的本地主机上测试过它
编辑
要排除登录页面,请使用以下代码
假设您的登录页面 url 包含 "login",请根据您的登录页面 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();
我的网站需要一个会话超时。
当我将当前代码添加到我所有控制器的所有函数中时,我的当前代码可以正常工作。
有没有办法只写一次并包含在所有控制器中?
-在带有 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();
当我将它添加到我所有控制器的所有函数中时,上面的代码有效。 但是我需要一个单页代码。
将此代码放在通用或配置 php 文件中
<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
您可以使用
设置会话参数session_set_cookie_params http://php.net/manual/en/function.session-set-cookie-params.php
您需要先启动会话才能销毁它
在您的配置文件中使用以下代码
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。它应该可以工作,我在我的本地主机上测试过它
编辑
要排除登录页面,请使用以下代码 假设您的登录页面 url 包含 "login",请根据您的登录页面 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();