SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

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 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK