Поставил скрипт - не работает. Не проходит авторизация.
Начал ковыряться выяснилось что время жизни сессии 0.
print_r(session_get_cookie_params());
Хотя в настройках прописано
ini_set ('session.cookie_lifetime', 1800);
ini_set ('session.gc_maxlifetime', 1800);
Что это может быть ?
bestxp
27.03.2015 - 16:36
1 сессия стартует на каждой странице?
время жизни 0 это нормально, это значит что сессия живет до закрытия страницы (по умолчанию)
Игорь_Vasinsky
27.03.2015 - 16:38
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
стартует. Но данные не проходили после редиректа.
Разобрался с проблемой.
В БД была ошибка. Везде где записывался 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
27.03.2015 - 19:07
ну потому что
apache может быть за nginx и тогда он не получит ip если его не передадут, так же может быть прокси и тд которые передают ip пользователя
killer8080
28.03.2015 - 02:20
Цитата (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
28.03.2015 - 03:34
Цитата (killer8080 @ 28.03.2015 - 01:20) |
сейчас браузеры ведут себя иначе, хром с фф не убивают куки при закрытии окна. |
кстати, если IE ведет себя так же, то пора уже нам задуматься о целесообразности реализации "Запомнить меня"
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
bestxp
30.03.2015 - 13:32
Цитата |
сейчас браузеры ведут себя иначе, хром с фф не убивают куки при закрытии окна.
|
Вообще-то убивают, не путай закрытые вкладки и закрытие браузера
притом что например у хрома могут висеть оффлайн приложения и по сути браузер не закрыт ( висит в трее из-за расширений ) и получается что браузер не закрыт и значит сессионные куки не удалены
killer8080
30.03.2015 - 14:22
Цитата (bestxp @ 30.03.2015 - 12:32) |
Вообще-то убивают, не путай закрытые вкладки и закрытие браузера притом что например у хрома могут висеть оффлайн приложения и по сути браузер не закрыт ( висит в трее из-за расширений ) и получается что браузер не закрыт и значит сессионные куки не удалены |
Несколько месяцев назад специально проверял в хроме и фф, сейчас специально открыл ту тестовую страницу, куки до сих пор висят.
Корректно себя ведёт только старая опера, и возможно ишак (не проверял)