Как включить Session Timeout во всех контроллерах?

Мне нужен тайм-аут сессии для моего сайта.

Мой текущий код работает, когда я добавляю его во все функции на всех моих контроллерах.

Есть ли способ написать это только один раз и включить его во все контроллеры?

-в конфигурационном файле с 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();

Приведенный выше код работает, когда я добавляю это во все функции на всех моих контроллерах.
Но мне нужен код одной страницы.

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 из файлов вашего контроллера. Это должно работать, я проверил это на моем локальном хосте

редактировать

Чтобы исключить страницу входа, используйте следующий код
Предполагая, что URL вашей страницы входа в систему содержит «login», измените $ string в соответствии с URL вашей страницы входа.

        $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

Другие решения

поместите этот код в общий или конфигурационный файл php

<?php
if ($_SESSION['timeout'] + 10 * 60 < time()) {
// session timed out
} else {
// session ok
}
?>
0

Вы можете установить параметры сеанса с

session_set_cookie_params http://php.net/manual/en/function.session-set-cookie-params.php

0
По вопросам рекламы [email protected]