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
お礼
返答と参考URLありがとうございます リニューアルしているサイトというのが数年前に 業者に組んでもらったもので、SESSION周りもそちらで 作ったり設定したものなんです 携帯に関してはクッキー使っていないのでこの件については 考えなくても大丈夫です 無効化した環境のはわからないので 検証してみます SESSIONはセキュリティなどが絡むので手出ししにくかったのと 今まで使う機会も無かったので使い方は知っている程度のレベルです 今回、質問のような状況になっていることに初めて気付いて 問題があるのか、少し不安になったもので質問させて頂きました 参考サイトを見たり調べたことで、動作は仕様であるということは わかったのですが、結局それで何かしらの問題があるのかないのか っていう結論がわかりません 私の調べ方が悪いのか、SESSIONの使い方についての説明サイトばかりで SESSIONを使うことで出る弊害などについて書いているサイトが 見つけられなかったので、答えを知っている人が確実にいるであろう こちらに質問してみました