※ ChatGPTを利用し、要約された質問です(原文:クッキー書き込みが正常に行われない?)
クッキー書き込みが正常に行われない?
このQ&Aのポイント
フォームで名前を入力してもクッキーに書き込めないエラーが発生する
1.cgiの名前のデータを呼び込む際にエラーが発生する
クッキー書き込みをしないで実行すると正常に名前が表示される
http://oshiete1.goo.ne.jp/kotaeru.php3?q=394703
を質問していたものです。
1.フォームで名前を入力
2.1の情報をクッキーに書き込み
ということをやりたいのです。
(応用いたしますが、基本はこれです。)
1つ目のcgiで、フォームで名前を入力。
-----1.cgi--------------------
#!/usr/local/bin/perl
print "Content-type:text/html\n\n";
print "<form method=post action=2.cgi>\n";
print "<input type=text name=name></input><BR>\n";
print "<input type=submit value=ok></input><BR>\n";
print "</form>\n";
exit;
------------------------------
1.cgiの名前のデータを呼び込もうとしてもエラーになる。
-----2.cgi--------------------
#!/usr/local/bin/perl
read(STDIN,$atai,$ENV{'content_length'});
($key, $value) = split(/=/, $atai);
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
print &setCookie("name",$value);
print "Content-type:text/html\n\n";
print "名前:<FONT COLOR=RED>",$value,"</FONT>と送信されました。<br>\n";
#Cookie書き込み。
sub setCookie{
local($tmp,$val);
$val = $_[1];
$val =~ s/(\W)/sprintg("%%%02X",unpack("C",$1))/eg;
$tmp="Set-Cookie: ";
$tmp .="$_[0]=$val; ";
$tmp .="expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
return($tmp);
}
------------------------------
クッキー書き込みをしないで実行すると、きちんと名前が表示されます。
どこをなおせばきちんとクッキーにセットされるのでしょうか?
何度も申し訳ありませんがよろしくお願いします。
お礼
回答ありがとうございます。 無事実行できました。 >あと自分で記述した場合は見直しをよく行ってください。 はい、そのとおりですね。 何回も見直したつもりでいたんですが…。 この2.cgiを終了した後、クッキーを呼び出すために、 3.cgiを作成しました。 -----3.cgi-------------------- #!/usr/local/bin/perl # Cookieを読み出す。 &getCookie(); $name=$COOKIE{'name'}; print "Content-type:text/html\n\n"; print $name; print exit; #cookie読み込み。 sub getCookie{ local($cookie,$cookie3,$key,$value); $cookie=$ENV{'HTTP_COOKIE'}; #read(STDIN, $cookie, $ENV{'CONTENT_LENGTH'}); @cookie2=split(/; /,$cookie); foreach $cookie3(@cookie2){ ($key,$value)=split(/=/,$cookie3); $value =~ s/%([0-9A-fA-f][0-9A-fA-f])/pack("C",hex($1))/eg; $COOKIE{$key}=$value; } } ------------------------------ でも、さきほど2.cgiで入力して、出てきた値ではないものが出てきてしまうのです。 クッキーの値って上書きということはできないなんてことなんでしょうか? 申し訳ありませんが、再度よろしくお願いいたします。
補足
すいません、できました。 ありがとうございました。