質問: 保存チェックボックスにチェックが入っていれば ログイン情報をクッキーに保存し、ログイン情報が次回から自動で入力されているという システムを書いています。 CGIには全くの無知で以下の様に記述しましたが、うまく思った通りの挙動になりません。 どうすれば良いでしょうか。。。 if($cook[2] eq "off"){ print ""; print " ID 保存"; print ""; print " パスワード "; } else{ print ""; print " ID 保存"; print ""; print " パスワード "; }
回答: ちょっと情報が少なかったので、勝手に解釈して、雑に書いてみましたが、こんな感じですかね? 後、コードはマークダウンで囲っていただけると見やすいです>< test.cgiというファイルで保存していただくと、そのまま実行できます。 ``` #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print ''; # チェックボックスがチェックされているか use CGI; my $cgi = CGI::new(); my $ck = $cgi->param('checkbox_name'); # チェックボックスがチェックされているかの取得 my $text = $cgi->param('text'); # フォームの内容 # チェックされていたらCookieを書き込む if ( $ck eq "on" ){ # Cookieの書き込み print ''; # HTMLのmetaタグを使った書き込み #print "Set-Cookie: INFO=$text; Tue, 31-Dec-2030 23:59:59;\n"; # PerlのCookie関数...何故か使えない。 print "\n"; } # クッキーの取得 my $cookie = $ENV{'HTTP_COOKIE'}; # 全てのCookieデータが入ってくる。Cookieごとの終わりは「; 」なので my @cdata = split(/; /, $cookie); # 「; 」でsplitしてあげると良いかなと。 my $info = ""; for ( my $i=0; $i<@cdata; $i++ ){ # データの数だけループを回す print "$cdata[$i]"; # とりあえずの出力 my @sp = split(/=/, $cdata[$i]); # データは、「Cookie名=Cookieの値」で取得できるので、「=」でsplit if ( $sp[0] eq "INFO" ){ # Cookie名が「INFO」なら、Cookieの値を取得 $info = $sp[1]; } } print ""; # 適当なフォームの出力(HTML部分) print ''; if ( $info ne "" ){ # フォームの表示 print ''; print '情報の記録'; }else{ print ''; print '情報の記録'; } print ''; # フォームの終わり print ''; print "フォームの値:$text"; ```