вам действительно не нужно самостоятельно захватывать cookie-файлы сессии.Если вы передаете экземпляр объекта CGI в CGI :: Session, он делает это за вас.Таким образом, в основном вышеприведенный код с помощью jfd можно переписать так: блоки
my $session = CGI::Session->new( $query );
$self->header_props(-cookie => $session->cookie);
и $query->cookie()
и if/else
являются избыточными, поскольку они уже существуют в логике CGI :: Session!
Таким образом, приведенный выше код проверяет наличие cookie клиента с именем CGI::Session->name
(по умолчанию CGISESSID
).Если он не существует, ищет параметр запроса в URL-адресе или в теле запроса с именем CGI::Session->name
(по умолчанию также CGISESSID
).Если он может получить заявленный идентификатор сеанса, он пытается загрузить свои данные в сеанс.Если идентификатор сеанса не может быть проверен (истек или подделан), он игнорирует его и создает новый пустой сеанс.
Если идентификатор сеанса не может быть найден ни в файле cookie, ни в параметрах URL, он создает новый сеанс.
В большинстве примеров управления сеансами, которые я вижу, попробуйте заново изобрести логику сеанса внутрикод при использовании CGI :: Session.Я просто здесь, чтобы сказать вам, что весь этот код полностью избыточен !!!
Наслаждайтесь использованием CGI :: Session!