hiddenを使ったセッション
こんにちは。
セッションを使ったデータの受け渡しをしたいのですが、
(携帯を考慮してcookieは使わないやり方で)
hiddenにセッションIDを持たせる方法で書いてみたのですが、
うまくいきません。
送られてはいるけど、受け取れていないのかな…?
とは思うのですが、対処がわかりません。
以下のソースです。(確認用でGETにしてます)
望むのは、printされたセッションIDとテキスト内のセッションIDが
同一になる(=セッションが保持できてるということですよね?)
かつ、submitしても、セッションIDが変わらない、という状況です。
よろしくお願いいたします。
print "Content-type: text/html\n\n";
use CGI;
use CGI::Session qw/-ip-match/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $query_string, $ENV{'CONTENT_LENGTH'});
} else {
$query_string = $ENV{'QUERY_STRING'};
}
my $cgi = new CGI;
CGI::Session->name("session_id");
my $session = new CGI::Session("driver:File", $cgi, {Directory=>'./session'});
$sid = $session->id();
$session->param('value', $sid);
$sesid = $session->param('value');
print $sesid."<br>\n";
undef($session);
@query = split(/&/, $query_string);
foreach $query (@query){
($name, $data) = split(/=/, $query);
$data{$name} = $data;
}
print <<"EO";
<html><head>
<title>
</title>
</head>
<body><hr><hr>
<form action="./test.cgi" method="GET">
<input type="hidden" name="session_id" value="$sesid">
<input type="text" name="btn" size="50" value="$data{'session_id'}"><br>
<input type="submit" value="submit"><br>
</form>
<hr><hr></body></html>
EO