проблемы с работой с сесиями

kolyazdv

Новичок
проблемы при работе с сесиями

Добрый день!

не отсылайте сразу на мануал.. уже 2 дня там все перечитываю....

задача сделать время жизни сесии 5 часов
phpinfo();
показал, что session.gc_maxlifetime 1440 1440
вычитал в мануале что нада
session_set_cookie_params(60*60*5);
сделал так - тоже неработает... потом еще немного почитал написанно что нада еще добавить строку
ini_set('session.gc_maxlifetime', 60*60*5);
перед session_start();
сделал всеравно через 24 мин отваливаеться...

как професианалы подскажите как правильно нужно устанавливать время жизни сесии что б работало во всех броузерах?


PHP Version 5.2.5
Apache/1.3.41 (Unix)
 

LeFF®

Новичок
на хостинге может запрещено эти параметры через ini_set менять?
 

LeFF®

Новичок
kolyazdv
выводи phpinfo(); после установки ini_set('session.gc_maxlifetime', 60*60*5);
смотри 1 и 2 значение
 

Gas

может по одной?
kolyazdv
нужно только изменить session.gc_maxlifetime и указать свой путь для хранения сессий session.save_path.
Когда все файлы сессий разных проектов лежат в одном месте, то garbage коллектор не различает (и не может этого сделать) чьи сессии он подчищает.
С куками мудрить не нужно.
 

kolyazdv

Новичок
есть вопрос

попытался прислушаться к Вашему совету и изменить путь для хранения сессий session.save_path
в файле .htaccess прописал
php_value session.save_path = /home/сайт/public_html/temp

причем
папка temp существует имеет права на запись и чтение находиться в корне сайта

но у мня заглючил весь сайт... :((
написал письмо суппорту... на что он мне ответил..

Это не допустимо на виртуальном хостинге.
Папка для хранения сессия на сервере одна, и не может быть изменена.
Она называется "/tmp" и прописана в главном конфиге PHP.

так вопрос как поборото проблемму не переежая на другой хостинг?
 

Gas

может по одной?
эта настройка легко меняется прямо в скрипте, естественно до session_start(). Хотя может хостер как-то и запрещает её изменение, попробуй.
 

stillwaiting

Новичок
session_set_save_handler - если все совсем глухо то можно хранить сессии в БД например
 

kolyazdv

Новичок
вроде как получилося..
прописал
ini_set('session.gc_maxlifetime', 60*60*5);
ini_set('session.save_path', "/home/сайт/public_html/temp/");
session_start();

-~{}~ 21.04.08 10:08:

Добрый день!

опять проблемка с сесиями.. помогите решить....


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

за ранее пасибо!
 

Beavis

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

kolyazdv

Новичок
если я правильно понял то нужно сделать так?

ini_set('session.gc_maxlifetime', 60*60*5);
ini_set('session.save_path', "/home/сайт/public_html/temp/");
session_start();
setcookie(session_name(), session_id(), time()+60*60*5, “/”);

если не такто подскажите как правильно нужно делать?
 

Beavis

Banned
точнее, восстановить именно старую сессию ты никак не сможешь - надо начинать новую
 

kolyazdv

Новичок
Есть требование - помнить пользователя (даже не регистрированного), его корзину, его информацию о адресе доставки, способе оплаты, и др, всего около 20-30 позиций, до 100. В течении 5ти часов от последнего визита....

как это можно организовать...?

иль подскажите где есть пример уже готового... вот например на этом форуме.. я могу неделю не появляться а когда захожу он мня узнает... как это организованно? В куках? тогда вопрос как хранить например корзину в 100 позицими... адрес ну и т д в куке? иль еще есть способы другие?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
kolyazdv
огда вопрос как хранить например корзину в 100 позицими... адрес ну и т д в куке? иль еще есть способы другие?
Единственный правильный - бд.
 

Beavis

Banned
только не представляю как ты будешь отличать одного незарегистрированного пользователя от другого... есть конечно способы, но они далеко не 100%-ные...
 

kolyazdv

Новичок
а есть ли варик хранить сессию в куке
session_name(),
session_id()

а потом просто сделать проверку если сесия есть подключить и все ок...


иль при закрытии броузера сесия уничтожаеться?
 

dimagolov

Новичок
kolyazdv, сессия на сервере все равно уничитожется, рано или поздно. Поэтому надо кроме сессии делать уникальный идентификатор пользователя который вместе с карзинами и пр. хранить в БД а не в сессии и отдавать ему этот идентификатор в куках и при повторных заходах по наличию такой куки грузить все из базы.
НО надо понимать, что если пользователь регестренный, то он может работать с несколькоих ПК / броузеров и одновременно в том числе, при этом сессии будут разные, а идентификатор ка и логин один. При зпоминании в куках привязка будет к броузеру и об этом надо предупреждать и делать это опционально, так как прикольно будет при заходе с интернет - кафе...
 
Сверху