アプリ版:「スタンプのみでお礼する」機能のリリースについて

sessionIDがページを更新するたびに変わってしまいます。
その結果、前回セッションに保存した値を読み込めません。


my $cgi = new CGI;
CGI::Session->name("SESSION_ID");
my $session = new CGI::Session("driver:File", $cgi, {Directory=>'./session'});
print $session->header(-charset=>'UTF-8');

print $session->id();

print $session->param("name"); #表示されず。

というようにしてセッションIDを表示すると、毎回変化します。
どうしたらIDを変わらないように出来るでしょうか?





ちなみに、セッションに書き込むのは、

my $cgi = new CGI;
CGI::Session->name("SESSION_ID");
my $session = new CGI::Session("driver:File", $cgi, {Directory=>'./session'});

$session->header(-charset=>'UTF-8');
$session->param("name", "abc");
$session->flush();

undef($session);

こんな処理をしてます。

A 回答 (2件)

new CGI::Sessionして、それをHTMLレスポンスのヘッダにprintすると、


新しいセッションIDがクッキーに保存されることはわかる?

> sessionIDがページを更新するたびに変わってしまいます。
> その結果、前回セッションに保存した値を読み込めません。
セッションを書き込む処理と同じことをしてるんだから、そりゃそうなるでしょ。

以下、ためしてないけど

my $cgi = new CGI;
print $cgi->header(-charset=>'UTF-8');

CGI::Session->name("SESSION_ID");
my $session = CGI::Session->load("driver:File", $cgi, {Directory=>'./session'});
if ( $session->is_expired ) {
# セッション満了
}
elsif ( $s->is_empty ) {
# 認証失敗
}
else {
# 認証成功
}
    • good
    • 0
この回答へのお礼

なるほど。
loadを使うんですね。

お礼日時:2013/02/05 08:35

$s->is_empty



$session->is_empty
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!