Boss |
|
---|---|
В чем причина слета авторизации? Вроде куки создаются, дата там нормальная устанавливается... Почему сайт выпинывает пользователя через некоторое время?
ps: В настройках $cfg['ipcheck'] = FALSE; значит эта причина сразу отпадает. |
jcrush |
|
---|---|
та же фигня, уже не один раз писал об этом
SEO блог: http://blog.stfw.ru/
|
Boss |
|
---|---|
Похоже авторизация держится только за счет сессий. Куки не воспринимаются в принципе.
|
esclkm |
|
---|---|
1. куки в наспройках подписаны?
2. версия? 3. на скольких компах используется 1 аккаунт? littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
dervan |
|
---|---|
Это - ошибка при вычислении параметра $expire при вызове функцищи sed_setcookie(). Параметр имеет тип int, а вычисляется сейчас так:
time()+$cfg['cookielifetime']*86400При этом значение $cfg['cookielifetime'] по умолчанию '5184000', т.е. происходит превышение максимально возможной величины для int, и в результате получается cookie с Expires = Session. Исправление ошибки. Найти в system/functions.admin.php строку:
$result[] = array ('main', '10', 'cookielifetime', 2, '5184000', array (1800,3600,7200,14400,28800,43200,86400,172800, 259200,604800,1296000,2592000,5184000));
$result[] = array ('main', '10', 'cookielifetime', 2, '60', array(1,2,3,7,15,30,60));
Найти в system/lang/en/admin.lang.php строку:
$L['cfg_cookielifetime'] = array('Maximum cookie lifetime', 'In seconds');
$L['cfg_cookielifetime'] = array('Maximum cookie lifetime', 'In days');
Зайти в Administration panel / Configuration / Main setup и там поправить Maximum cookie lifetime :, например на 60.[/][/] |
Trustmaster |
|
---|---|
Теперь понятно, почему иногда "remember me" вообще не может задать cookie. Может проще убрать множитель 86400 и оставить время в секундах? Иначе надо еще добавить SQL-патч и менять все языковые файлы.
May the Source be with you!
|
|
This post was edited by Trustmaster (2009-03-15 02:31, 15 years ago) |
dervan |
|
---|---|
А где обсуждали вопрос об изменении единицы измерения - какие были причины для этого?
В секундах есть свои преимущества - можно как и раньше ставить интервалы меньше, чем сутки. И что lang-файлы при откате назад на секунды не придётся переделывать - тоже большой плюс. |
Trustmaster |
|
---|---|
Нигде не обсуждали, это чистой воды баг, который получился в результате путаницы переменной в конфиге и параметра в форме авторизации.
May the Source be with you!
|
dervan |
|
---|---|
Если никто не хотел менять единицу измерения - может, и правда проще поменять способ вычисления параметра $expire.
Тем, кто сейчас использует Cotonti 0.0.3, можно в качестве временного решения до выхода новой версии советовать ставить в админке Maximum cookie lifetime в значение 1800 (хотя может и побольше будет работать, надо проверять). А после установки следующей версии им придётся опять сходить в админку и поменять это значение. |
Boss |
|
---|---|
Спасибо!
зыЖ Админы, вы бы еще на этом сайте подкрутили настройки. |
dervan |
|
---|---|
Пожалуйста. :)
Только исправлять код надо иначе - выложенный здесь вариант сделан из неверного предположения, что была изменена единица измерения. Правильный вариант исправления кода здесь: r636. |
Boss |
|
---|---|
Короче, все равно, как оказалось вылетает авторизация. Я уж и те три файла пропатчил, как предлагается по ссылке в предыдущем посте.
|
dervan |
|
---|---|
До того, как я искал эту ошибку, у меня стоял апдейт с Cotonti 0.0.2 до 0.0.3, там она не наблюдалась.
Поставил Cotonti 0.0.3 с нуля, ошибка начала стабильно повторяться. Сделал исправления, как рассказано выше, больше эта ошибка не появляется. Boss, пожалуйста посмотри у себя подробнее, что происходит - сейчас из твоего сообщения неясно, что и где искать. И ещё: если ты сделал патч r636, не забудь в админке вернуть Maximum cookie lifetime в значение 5184000. И на всякий случай почисти cookie в браузере. P.S. Если ты заходишь по HTTPS, то cookie авторизации слетают после сеанса - так и должно быть, это специально сделано. |
Trustmaster |
|
---|---|
Boss, у тебя динамический IP, который постоянно меняется. Поэтому неудивительно, что слетает авторизация на этом сайте. Вот если ipcheck=FALSE, то это уже другое дело. Но чтобы выяснить, в чём оно состоит, надо очень чётко фиксировать последовательность действий, которая приводит к слёту авторизации. Потому что если проблема с сабмитом форм - это одно, а если просто при сёрфинге - это совсем другое. И частота вылетов тоже очень важна.
May the Source be with you!
|
Boss |
|
---|---|
Проверял все. Начал сегодня разбираться - кук COTONTI не создается, только PHPSESSID.
![]() Вот этот фикс снимите, он ложный. http://trac.cotonti.com/ticket/248 Без него все нормально. |