SAK 図書館
CGI-Perl 基礎実地編 - 実習7 (リクエスト)
■test07.cgi ------ ↓ ここから ↓ ------ #!/usr/local/bin/perl #//準備 *data = GetPara(); $a = $data{'a'}; $b = $data{'b'}; #//HTML 出力 print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<P>リクエストテスト</P>\n"; print "<P>a = $a</P>\n"; print "<P>b = $b</P>\n"; print "</HTML>\n"; #// 終了 exit(0); #//===================================================================== #// パラメタ取得 #//===================================================================== sub GetPara { my($encode) = @_; my($method) = $ENV{'REQUEST_METHOD'}; local($qu, @in, $key, $val); #// 日本語コード変換 jcode.pl 読み込み require 'jcode.pl' if $encode; #// パラメタ取得 if ($method eq 'GET') { $qu = $ENV{'QUERY_STRING'}; } elsif ($method eq 'POST') { read(STDIN, $qu, $ENV{'CONTENT_LENGTH'}); } local(@qu) = split(/&/, $qu); foreach (@qu) { tr/+/ /; ($key, $val) = split(/=/); $key =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack('c', hex($1))/ge; $val =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack('c', hex($1))/ge; $val =~ s/\r\n/\n/g; jcode'convert(*key, $encode) if ($encode); jcode'convert(*val, $encode) if ($encode); $in{$key} = $val; } #// 戻り値セット return *in; } ------ ↑ ここまで ↑ ------ ■解説 ・この test07.cgi は、単純に実行しても意味がありません。 次のように呼び出します。 test07.cgi?a=para1&b=para2 | |_ 第二パラメタ b にセットするデータ |_ 第一パラメタ a にセットするデータ 【例】 test07.cgi?a=12345&b=abcdef test07.cgi?a=あいうえお&b=日本語 ・パラメタを指定して呼び出すと、それぞれのパラメタをブラウザに 表示します。実際に CGI-Sever で実行する場合、日本語が化けるかも しれません。jcode.pl と言うコード変換 pl が必要なのですが、 次の段階で設置することにしましょう。 #//準備 *data = GetPara(); |_ 連想配列(ハッシュ変数) $data にパラメタを受け取ります。 $a = $data{'a'}; |_ 連想配列(ハッシュ変数) $data の a パラメタを $a にセット。 $b = $data{'b'}; |_ 連想配列(ハッシュ変数) $data の b パラメタを $b にセット。 #//===================================================================== #// パラメタ取得 #//===================================================================== sub GetPara |_ 私がいつも使ってる関数です。 まるコピーして下さい。 ■補足 ・GetPara() は、フォームからのリクエストにも対応しています。 フォームからのリクエストについては、実習8 で説明します。 ■実地 ・test07.cgi も実際に作成してテストしてみましょう。 ■CGI-Perl 基礎実地編資料
■CGI-Perl 基礎編資料
■CGI-Perl 応用実地編資料
■PHP 基礎編資料
■PHP + MySQL 編資料