documents:perl:perl-005
CGI.pmで同名のパラメタを複数受け取る
2009年05月23日 02時42分15秒
CGI.pmでCGI書き直しをやった際のメモ。 頚の痛みが和らいでいるうちに残しておく。薬切れたらまた痛みが襲ってくるはずだしorz
サンプル
CGI→url_param() と CGI→param() を使い分け出来ればよい。
URL及びフォームに同名パラメタが複数ある例
ccc.html
- ccc.html
<HTML> <HEAD> <TITLE>test form</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="ccc.cgi?DATA=123&DATA=789"> <INPUT TYPE="hidden" NAME="DATA" VALUE="ABC"/> <INPUT TYPE="hidden" NAME="DATA" VALUE="XYZ"/> <INPUT TYPE="submit" VALUE="Send"/> </FORM> </BODY> </HTML>
ccc.cgi(Perlのコード)
- ccc.cgi
#!/usr/bin/perl use CGI; my $cgi = CGI->new(); my @getval = $cgi->url_param('DATA'); my @postval = $cgi->param('DATA'); print "Content-Type: text/plain; charaset=euc-jp\r\n"; print "\r\n"; print $getval[0] . "\r\n"; print $getval[1] . "\r\n"; print $postval[0] . "\r\n"; print $postval[1] . "\r\n";
これをサーバに配置して ccc.html を表示し、submiボタンを押す。 結果は
123 789 ABC XYZ
となり、URLに追加されたパラメタ、フォームに追加されたパラメタ、いずれも識別して取得が可能となる。
フォームに限定して、同名パラメタが複数ある例
ddd.html
- ddd.html
<HTML> <HEAD> <TITLE>test form</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="ddd.cgi?DATA=123&DATA=789"> <INPUT TYPE="hidden" NAME="DATA" VALUE="ABC"/> <INPUT TYPE="hidden" NAME="DATA" VALUE="XYZ"/> <INPUT TYPE="submit" VALUE="Send"/> </FORM> </BODY> </HTML>
ddd.cgi(Perlのコード)
- ddd.cgi
#!/usr/bin/perl use CGI; my $cgi = CGI->new(); my @val = $cgi->param('DATA'); print "Content-Type: text/plain; charaset=euc-jp\r\n"; print "\r\n"; print $val[0] . "\r\n"; print $val[1] . "\r\n"; print $val[2] . "\r\n"; print $val[3] . "\r\n";
これをサーバに配置して ddd.html を表示し、submiボタンを押す。 結果は
ABC XYZ
となり、フォームのパラメタのみ取得が可能となる。
URLに限定して、同名パラメタが複数ある例
eee.html
- eee.html
<HTML> <HEAD> <TITLE>test form</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="eee.cgi?DATA=123&DATA=789"> <INPUT TYPE="hidden" NAME="DATA" VALUE="ABC"/> <INPUT TYPE="hidden" NAME="DATA" VALUE="XYZ"/> <INPUT TYPE="submit" VALUE="Send"/> </FORM> </BODY> </HTML>
eee.cgi(Perlのコード)
- eee.cgi
#!/usr/bin/perl use CGI; my $cgi = CGI->new(); my @val = $cgi->url_param('DATA'); print "Content-Type: text/plain; charaset=euc-jp\r\n"; print "\r\n"; print $val[0] . "\r\n"; print $val[1] . "\r\n"; print $val[2] . "\r\n"; print $val[3] . "\r\n";
これをサーバに配置して eee.html を表示し、submiボタンを押す。 結果は
123 789
となり、URLのパラメタのみ取得が可能となる。
documents/perl/perl-005.txt · 最終更新: 2024/11/01 16:30 by k896951