| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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-й строке" в механизме сессий нет. это примитивный механизм, который работает на куках. поэтому ошибку надо искать. не пытаться ставить малопонятные куски кода в надежде заткнуть дырку, а искать её. для начала вернуть все настройки в дефолтное состояние. |