努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:proglang:perl:perl-005

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
documents:proglang:perl:perl-005 [2026/05/08 11:54] – ↷ documents:perl:perl-005 から documents:proglang:perl:perl-005 へページを移動しました。 k896951documents:proglang:perl:perl-005 [2026/05/17 15:01] (現在) – [CGI.pmで同名のパラメタを複数受け取る] k896951
行 1: 行 1:
 +
 +====== 006.CGI.pmで同名のパラメタを複数受け取る ======
 +
 +2009年05月23日 02時42分15秒
 +
 +CGI.pmでCGI書き直しをやった際のメモ。
 +頚の痛みが和らいでいるうちに残しておく。薬切れたらまた痛みが襲ってくるはずだしorz
 +
 +===== サンプル =====
 +
 +
 +CGI->url_param() と CGI->param() を使い分け出来ればよい。
 +
 +==== URL及びフォームに同名パラメタが複数ある例 ====
 +
 +
 +ccc.html
 +<code 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>
 +</code>
 +
 +
 +ccc.cgi(Perlのコード)
 +<code 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";
 +</code>
 +
 +これをサーバに配置して ccc.html を表示し、submiボタンを押す。
 +結果は
 +<code>
 +123
 +789
 +ABC
 +XYZ
 +</code>
 +
 +となり、URLに追加されたパラメタ、フォームに追加されたパラメタ、いずれも識別して取得が可能となる。
 +
 +==== フォームに限定して、同名パラメタが複数ある例 ====
 +
 +
 +ddd.html
 +<code 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>
 +</code>
 +
 +ddd.cgi(Perlのコード)
 +<code 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";
 +</code>
 +
 +これをサーバに配置して ddd.html を表示し、submiボタンを押す。
 +結果は
 +<code>
 +ABC
 +XYZ
 +
 +
 +</code>
 +
 +となり、フォームのパラメタのみ取得が可能となる。
 +
 +==== URLに限定して、同名パラメタが複数ある例 ====
 +
 +
 +eee.html
 +<code 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>
 +</code>
 +
 +eee.cgi(Perlのコード)
 +<code 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";
 +</code>
 +
 +これをサーバに配置して eee.html を表示し、submiボタンを押す。
 +結果は
 +<code>
 +123
 +789
 +
 +
 +</code>
 +
 +となり、URLのパラメタのみ取得が可能となる。
 +
 +{{tag> CGI www Perl 技術資料}}
  
documents/proglang/perl/perl-005.txt · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki