Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ПОМОГИТЕ с СЕССИЯМИ


Автор: wow1 22.9.2009, 14:26

Здравствуйте!
Помогите пожалуйста!
Готов даже отблагодарить за дельный совет по вебмани(если все сработает)
Сделал авторизацию на сайте.
Слетает сессия авторизации! То есть бывает все нормально, работаешь под своим аккаунтом, а потом перешел на какую-то страницу и сессия слетела, заново просит авторизацию. Причем немогу отловить, в чем ошибка, можно работать например, 2 часа и все будет нормально, а может слететь и через 5 минут. То есть время от времени на разных страницах.
Пробовал выводить содержимое куки, заметил, что, когда сессия слетает, то PHPSESSID из куки удаляеться.
Пробовал:
1.устанавливать ему максимально время жизни через setcookie("PHPSESSID",session_id(),неогранич.время)
2.устанавливать
session_set_cookie_params(10800);
session_start();
3.Устанавливать в .htaccess
php_value session.gc_maxlifetime 10800
php_value session.cookie_lifetime 10800

Сессия у меня стартует в самом начале сайта, т.к сесси использовал используються не только при авторизации.
При выходе из аккаунта(logout): session_start(); session_destroy(); hrader('location:index.php');
Начальный код(index.php):

ob_start();
session_set_cookie_params(10800);
session_start();

Автор: Ипатьев 22.9.2009, 14:37
во-первых, время жизни сессионной куки должно быть равно 0
во-вторых, зачем ob_start перед стартом сессии?

в-третьих, что означает фраза "ерешел на какую-то страницу и сессия слетела"? так происходит всегда, когда сессия "слетает", или она может слететь и при нахождении на сайте, причем не после перерыва в работе, а сразу после посещения какой-либо страницы?
через сколько конкретно времени слетает, в секундах?

Автор: wow1 22.9.2009, 14:50
------во-первых, время жизни сессионной куки должно быть равно 0
поставил, теперь в .htacess только
php_value session.gc_maxlifetime 10800
Но и когда он был пустой, проблемма была та же.


-----во-вторых, зачем ob_start перед стартом сессии?
За это спасибо! Попробую!

Проблемма в том, что время до слета сесси РАЗНОЕ. Она слетает при нахождении на сайте... допустим хожу по разделам перехожу на один из них-и заново запрашивает авторизацию.

Автор: Ипатьев 22.9.2009, 15:09
ob_start никакого отношения к сессиям не имеет.
просто смысла ее писать перед стартом сессии нет ни малейшего.

вообще, если нет понимания механизма сессий, то я бы настоятельно рекомендовал делать все с настройками по умолчанию.
причина может быть давно исправлена, а сессии перестают работать из-за шаманских плясок с бубном. 
и собирать статистику. через какое время после последней активности пользователя слетела сессия.
плюс мониторить обмен куками.

в общем, если говорить короче.
никакой "известной ошибки" или чего-то подобного, "исправь в 13-й строке" в механизме сессий нет.
это примитивный механизм,  который работает на куках.
поэтому ошибку надо искать.
не пытаться ставить малопонятные куски кода в надежде заткнуть дырку, а искать её.
для начала вернуть все настройки в дефолтное состояние.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)