Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » сессии в php

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Shimnik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго Времени Суток!
Вопрос как я понимаю не трудный, но я что то совсем запутался!
Как продлить сессию , по умолчанию она умерает после закрытия браузера. При условие register_globals = off . Т.е $_SESSION[имя_сессии] как и где указать время жизни?
Заранее благодарен!

Всего записей: 56 | Зарегистр. 09-09-2004 | Отправлено: 20:03 14-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shimnik

Цитата:
Как продлить сессию , по умолчанию она умерает после закрытия браузера. При условие register_globals = off . Т.е $_SESSION[имя_сессии] как и где указать время жизни?  

ты, видимо, плохо разобрался в механизме сессий.. она не умирает, просто при новом запросе в новом окне браузера, генерится другой ID сессии, так как умирает кука с ID..
почитал бы мануал.
http://www.php.net/session

Цитата:
session.cookie_lifetime integer
session.cookie_lifetime specifies the lifetime of the cookie in seconds which is sent to the browser. The value 0 means "until the browser is closed." Defaults to 0. See also session_get_cookie_params() and session_set_cookie_params().  
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:15 14-10-2004
Shimnik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот я прочитал такую весчь:

Цитата:
 session_set_cookie_params(int lifetime[, string path [, string domain]]) - с помощью этой функции можно установить, как долго будет "жить" сессия, задав unix_timestamp определяющий время "смерти" сессии
 
Вот и подумал может всё таки можно как то задать время сессии.

Всего записей: 56 | Зарегистр. 09-09-2004 | Отправлено: 22:20 14-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shimnik

Цитата:
Вот и подумал может всё таки можно как то задать время сессии.

это одно и тоже.. только в моем случае я тебе указан на параметр (который можно менять несколькими способами), а во втором как раз один из способов.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:33 14-10-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Время жизни сессии и время жизни сессионной куки - не одно и то же, поскольку серверу в этом плане наплевать на сессионную куку - для него важнее параметр session.gc_maxlifetime. Параметр же session.cookie_lifetime имеет смысл лишь для клиента, да и то он не обязан обращать на него внимание (в частности, куки могут быть и выключены либо не доходить до клиента благодаря прокси-серверу).

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 23:13 14-10-2004
Shimnik



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery огромное спасибо за ссылку! , а на русском почитать ни чего нет? (просто в английском пока не особо разбираюсь).
SiMM есть какой нит вариант, дать сессии жизнь?

Всего записей: 56 | Зарегистр. 09-09-2004 | Отправлено: 23:20 14-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shimnik

Цитата:
SiMM есть какой нит вариант, дать сессии жизнь?

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

Цитата:
а на русском почитать ни чего нет

http://forum.ru-board.com/topic.cgi?forum=24&topic=2827#1

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:27 14-10-2004
phpcoder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кое-что осталось непонятным.
Решил разобраться на примерах как что работает (Apache 1.3.34 + PHP 5.1.2 + WinXP SP2)
 
php.ini:
Код:
session.save_path = c:\tmp
session.cookie_lifetime = 0
session.gc_maxlifetime = 10
 

 
1. Открываем сессию, открываем в браузере код
Код:
<?
session_start();
print(session_id()); // 7bb90404a9f707e298b84e7528b8aa4b
?>

 
Если я правильно понял, то, если более чем через 10 секунд обновить окно браузера должна открыться новая сессия? Этого не происходит! session_id() по прежнему 7bb90404a9f707e298b84e7528b8aa4b
 
2. Далее. Открываем сессию, открываем тотже код в браузере. Спустя 10 секунд, открываем скрипт в другом окне браузера. Открылась новая сессия. Но файл старой, также продолжает лежать в папке c:\tmp. Почему он не удалился? Непонятно.
 
3. Как безопаснее и рациональнее, скажем так, организовывать сеансы пользователей на сайте?
 - Хранить всю текущую информацию и время сеанса в базе, а в сессии только идентификатор, и по истечении отпущенного на "неактивность" времени убивать сессию самому? Что если, разрешенное время неактивности больше чем session.gc_maxlifetime?  
 ИЛИ
 - Хранить все данные в сессии, управляя временем сессии так:
Код:
ini_set("session.gc_maxlifetime", "10");
...

Всего записей: 194 | Зарегистр. 23-05-2004 | Отправлено: 13:57 08-11-2006 | Исправлено: phpcoder, 13:59 08-11-2006
Brodyaga



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
phpcoder
Использовать session_regenerate_id(); к 1 пункту.

----------
Damn Metal

Всего записей: 2713 | Зарегистр. 07-01-2006 | Отправлено: 15:28 08-11-2006
phpcoder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
session_regenerate_id --  Update the current session id with a newly generated one

Собственно по п.1 больше интересовал вопрос когда внутренние механизмы PHP удаляют сессию и сессионные данные, а не как поменять ИД сессии.

Всего записей: 194 | Зарегистр. 23-05-2004 | Отправлено: 15:48 08-11-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
phpcoder

Цитата:
Собственно по п.1 больше интересовал вопрос когда внутренние механизмы PHP удаляют сессию и сессионные данные, а не как поменять ИД сессии.

есть сборщик мусора, который и чистит. сессия жива вроде минут 20 после последнего обращения (можно настроить). Когда окно браузера закрывается - удаляется и кука с id сессии

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:03 08-11-2006 | Исправлено: Cheery, 20:17 08-11-2006
phpcoder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, спасибо.
Остается вопрос, по поводу того как отслеживать сеансы пользователей, т.е. случай когда юзер бездействует долго.
Например:
Есть насройка T=n минут, время, которое пользователь может бездействовать.
session.gc_maxlifetime намного меньше Т, так что, допустим "сборщик мусора" поудалял сессию пользователя и данныне этой сессии, а время Т ещё не прошло. Как хранить сессионые данные в таком случае?

Всего записей: 194 | Зарегистр. 23-05-2004 | Отправлено: 22:17 08-11-2006 | Исправлено: phpcoder, 22:18 08-11-2006
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
phpcoder

Цитата:
Есть насройка T=n минут, время, которое пользователь может бездействовать.  
session.gc_maxlifetime намного меньше Т, так что, допустим "сборщик мусора" поудалял сессию пользователя и данныне этой сессии, а время Т ещё не прошло. Как хранить сессионые данные в таком случае?

изменить этот параметр

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:01 08-11-2006
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » сессии в php


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru