0

CGI::Session在我的 Perl Web 应用程序中使用会话管理。我可以使用file会话驱动程序创建会话,但无法获取现有会话并且无法访问会话的存储参数。

我正在尝试获取现有会话,但它正在创建新会话,并且查询字符串$CGISESSID都相同,但$session在这里我得到的是不同的,它是一个全新的会话,所以我无法从会话中获取存储的参数。请帮我解决这个问题。

谢谢,克里希纳

4

2 回答 2

3

正如其他人指出的那样,如果您在每个请求中都获得新会话,则您没有在 cookie 中发送会话 ID。如果您使用 CGI.pm 来处理您的 HTTP 标头,请执行以下操作:

print $q->header(-cookie => $session->cookie);

如果您在应用程序框架中使用 CGI::Application,请在 setup() 或 cgiapp_init() 中执行此操作(如果有的话)

$self->header_add(-cookie => $session->cookie);

或者,您可以使用 CGI::Session 自己的 header(),默认情况下使用'CGI::header 方法:

print $session->header()

建议使用 CGI::Session 的实用程序(例如 cookie 和/或标头),因为它们尊重 cookie 的过期设置。

于 2012-11-02T05:21:17.010 回答
0

您在打印 html 内容之前是否在打印 $session->header() ?

于 2012-06-05T20:30:10.437 回答