[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Время жизни сессии - Ноль
Kusss
Поставил скрипт - не работает. Не проходит авторизация.
Начал ковыряться выяснилось что время жизни сессии 0.
print_r(session_get_cookie_params());
// Результат : Array ( [lifetime] => 0 [path] => / [domain] => [secure] => [httponly] => )

Хотя в настройках прописано
ini_set ('session.cookie_lifetime', 1800); // 0 - кука умирает при закрытии браузера
ini_set ('session.gc_maxlifetime', 1800); // время жизни сессии, полчаса

Что это может быть ?
bestxp
1 сессия стартует на каждой странице?
время жизни 0 это нормально, это значит что сессия живет до закрытия страницы (по умолчанию)

Игорь_Vasinsky
session_start() то в каждом файле??? стартует хоть?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Kusss
стартует. Но данные не проходили после редиректа.
Разобрался с проблемой.

В БД была ошибка. Везде где записывался IP было varchar(15), а в скрипте вот такая байда, смысл которой я не понимаю (зачем так сложно писать IP).
$user['user_ip']  = substr ((isset ($_SERVER['HTTP_X_FORWARDED_FOR'])) ? trim ($_SERVER['HTTP_X_FORWARDED_FOR']) : ((isset ($_SERVER['HTTP_CLIENT_IP'])) ? trim ($_SERVER['HTTP_CLIENT_IP']) : trim ($_SERVER['REMOTE_ADDR'])), 0, 16);

Сессия уничтожалась при проверки IP.
if ($result['session_ip'] == $user['user_ip'] AND ...) {
.....
} else {
session_destroy ();
return '';
}
bestxp
ну потому что
apache может быть за nginx и тогда он не получит ip если его не передадут, так же может быть прокси и тд которые передают ip пользователя
killer8080
Цитата (Kusss @ 27.03.2015 - 12:15)
ini_set ('session.cookie_lifetime', 1800); // 0 - кука умирает при закрытии браузера

никогда не ставь такое маленькое время жизни кукам, половина ламеров с неправильно настроенными датой|временем|часовым поясом не смогут залогинится. Если нужно ограничить время жизни сессии, то делать это надо на уровне логики скрипта.
Цитата (Kusss @ 27.03.2015 - 12:15)
ini_set ('session.gc_maxlifetime', 1800); // время жизни сессии, полчаса

сборщик мусора не стоит настраивать через ini_set()

Цитата (bestxp @ 27.03.2015 - 15:36)
время жизни 0 это нормально, это значит что сессия живет до закрытия страницы (по умолчанию)

сейчас браузеры ведут себя иначе, хром с фф не убивают куки при закрытии окна.
Invis1ble
Цитата (killer8080 @ 28.03.2015 - 01:20)
сейчас браузеры ведут себя иначе, хром с фф не убивают куки при закрытии окна.

кстати, если IE ведет себя так же, то пора уже нам задуматься о целесообразности реализации "Запомнить меня" smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

bestxp
Цитата
сейчас браузеры ведут себя иначе, хром с фф не убивают куки при закрытии окна.


Вообще-то убивают, не путай закрытые вкладки и закрытие браузера
притом что например у хрома могут висеть оффлайн приложения и по сути браузер не закрыт ( висит в трее из-за расширений ) и получается что браузер не закрыт и значит сессионные куки не удалены
killer8080
Цитата (bestxp @ 30.03.2015 - 12:32)
Вообще-то убивают, не путай закрытые вкладки и закрытие браузера
притом что например у хрома могут висеть оффлайн приложения и по сути браузер не закрыт ( висит в трее из-за расширений ) и получается что браузер не закрыт и значит сессионные куки не удалены

Несколько месяцев назад специально проверял в хроме и фф, сейчас специально открыл ту тестовую страницу, куки до сих пор висят. wink.gif

Корректно себя ведёт только старая опера, и возможно ишак (не проверял)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.