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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: session & logout

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Автоматическое завершение сессии
Vitaljan
Отправлено: 02 Июня, 2019 - 16:10:46
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2019  


Помог: 0 раз(а)




Всем добрый день. У меня не происходит автоматическое разлогинивание после закрытия браузера. В начале каждого .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 или руками почистить кукисы. В чем причина? Как добиться, чтобы пользователь не мог залогиниться навсегда?
Спасибо.
 
 Top
LIME
Отправлено: 03 Июня, 2019 - 11:37:59
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




у тебя на каждый запрос новая сессия стартует по 34 раза небось
покажи как логин проверяешь?
 
 Top
Vitaljan
Отправлено: 03 Июня, 2019 - 12:08:24
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2019  


Помог: 0 раз(а)




LIME пишет:
у тебя на каждый запрос новая сессия стартует по 34 раза небось
покажи как логин проверяешь?


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

// вынесено в отдельный php файл:
function getLogin() {
if (isset($_SESSION)) {
if ($_SESSION['login']) return true;
}
return false;
}
 
 Top
LIME
Отправлено: 03 Июня, 2019 - 13:29:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




https://www.php.net/manual/ru/fu...on.setcookie.php
Цитата:
Если задать 0 или пропустить этот аргумент, срок действия cookie истечет с окончанием сессии (при закрытии браузера).

в консоли браузера убедись что прилетает правильный expires
 
 Top
Vitaljan
Отправлено: 03 Июня, 2019 - 16:59:05
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2019  


Помог: 0 раз(а)




Я установил ini_set("session.cookie_lifetime", 0);

В консоли expires = "N/A"
 
 Top
LIME
Отправлено: 03 Июня, 2019 - 17:08:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




после закрытия браузера глянь что летит на сервер
есть ли куки на самом деле?
(Добавление)
вставь var_dump перед проверкой логина
 
 Top
Vitaljan
Отправлено: 03 Июня, 2019 - 17:37:55
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2019  


Помог: 0 раз(а)




LIME пишет:
после закрытия браузера глянь что летит на сервер
есть ли куки на самом деле?
(Добавление)
вставь var_dump перед проверкой логина


Куки есть. Даже до старта сессии.
 
 Top
LIME
Отправлено: 03 Июня, 2019 - 17:48:16
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




другие браузеры? другие кампуктеры? с мобылы?
что-то у тебя неладно
(Добавление)
Vitaljan пишет:
Куки есть. Даже до старта сессии.
ты понимаешь что надо не все смотреть?
можешь свою найти?
 
 Top
Vitaljan
Отправлено: 03 Июня, 2019 - 19:44:37
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Июнь 2019  


Помог: 0 раз(а)




Разобрался! На странице авторизации (в отличие от всех остальных страниц) перед session_start не было ini_set("session.cookie_lifetime", 0);

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

Осталось разобраться, как разлогиниться на всех устройствах (при смене пароля, например).
 
 Top
LIME
Отправлено: 03 Июня, 2019 - 20:11:37
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Собственное хранилище пилить
То есть самому реализовать механизм сессий
(Добавление)
это в любом случае полезно сделать потому как повсеместное обращение к суперглобальным массивам до добра не доведет
можно взять готовое решение
например компонент HttpFoundation от Symfony
(Добавление)
https://symfony[dot]com/doc/current/[dot][dot][dot]_foundation[dot]html
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB