Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: session & logout
Форумы портала PHP.SU » » Вопросы новичков » session & logout

Страниц (1): [1]
 

1. Vitaljan - 02 Июня, 2019 - 16:10:46 - перейти к сообщению
Всем добрый день. У меня не происходит автоматическое разлогинивание после закрытия браузера. В начале каждого .php файла прописано:
<?
require "/session.php";
// продолжение кода

session.php содержит следующий код:
<?
ini_set("session.cookie_lifetime", 0);
ini_set("session.use_strict_mode", "on");
ini_set("session.cookie_httponly", "on");
session_start();
?>
Залогинивание проходит успешно.
При этом, после закрытия браузера, разлогинивание не происходит. Чтобы разлогиниться, надо выполнить session_destroy или руками почистить кукисы. В чем причина? Как добиться, чтобы пользователь не мог залогиниться навсегда?
Спасибо.
2. LIME - 03 Июня, 2019 - 11:37:59 - перейти к сообщению
у тебя на каждый запрос новая сессия стартует по 34 раза небось
покажи как логин проверяешь?
3. Vitaljan - 03 Июня, 2019 - 12:08:24 - перейти к сообщению
LIME пишет:
у тебя на каждый запрос новая сессия стартует по 34 раза небось
покажи как логин проверяешь?


$login = getLogin();
if ($login) .......

// вынесено в отдельный php файл:
function getLogin() {
if (isset($_SESSION)) {
if ($_SESSION['login']) return true;
}
return false;
}
4. LIME - 03 Июня, 2019 - 13:29:23 - перейти к сообщению
https://www.php.net/manual/ru/fu...on.setcookie.php
Цитата:
Если задать 0 или пропустить этот аргумент, срок действия cookie истечет с окончанием сессии (при закрытии браузера).

в консоли браузера убедись что прилетает правильный expires
5. Vitaljan - 03 Июня, 2019 - 16:59:05 - перейти к сообщению
Я установил ini_set("session.cookie_lifetime", 0);

В консоли expires = "N/A"
6. LIME - 03 Июня, 2019 - 17:08:34 - перейти к сообщению
после закрытия браузера глянь что летит на сервер
есть ли куки на самом деле?
(Добавление)
вставь var_dump перед проверкой логина
7. Vitaljan - 03 Июня, 2019 - 17:37:55 - перейти к сообщению
LIME пишет:
после закрытия браузера глянь что летит на сервер
есть ли куки на самом деле?
(Добавление)
вставь var_dump перед проверкой логина


Куки есть. Даже до старта сессии.
8. LIME - 03 Июня, 2019 - 17:48:16 - перейти к сообщению
другие браузеры? другие кампуктеры? с мобылы?
что-то у тебя неладно
(Добавление)
Vitaljan пишет:
Куки есть. Даже до старта сессии.
ты понимаешь что надо не все смотреть?
можешь свою найти?
9. Vitaljan - 03 Июня, 2019 - 19:44:37 - перейти к сообщению
Разобрался! На странице авторизации (в отличие от всех остальных страниц) перед session_start не было ini_set("session.cookie_lifetime", 0);

Следует полагать, что причина была именно в этом.

Осталось разобраться, как разлогиниться на всех устройствах (при смене пароля, например).
10. LIME - 03 Июня, 2019 - 20:11:37 - перейти к сообщению
Собственное хранилище пилить
То есть самому реализовать механизм сессий
(Добавление)
это в любом случае полезно сделать потому как повсеместное обращение к суперглобальным массивам до добра не доведет
можно взять готовое решение
например компонент HttpFoundation от Symfony
(Добавление)
https://symfony[dot]com/doc/current/[dot][dot][dot]_foundation[dot]html

 

Powered by ExBB FM 1.0 RC1