ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> CGI について
  1. HTMLの表示方法
  2. データの受け渡し
■ HTMLの表示方法
CGI を利用してHTMLを表示するには、HTMLソースの記述の始めに 「Content-Type: text/htl」 の記述が必要です。 この記述は、これから表示されるデータがHTML形式のデータであることをWEBサーバーに伝えるものです。
この1文がないとHTMLの出力結果がブラウザーに表示されないので注意してください。

「Content-Type」 の記述の後には、空白の改行が1個必要です。

print >>END_HTML;
Content-Type: text/html    ← ここから先の記述がHTML文書であることを示します

<html>
<head>
ミスティーネットPerl・CGI講座 − MISTY-NET − </head>
<body>
TEST HTML
</body>
</html>
END_HTML





■ データの受け渡し
CGIを使ったデータの受け渡し方法は第1章でもご紹介したように、下記のような流れになります。
○ ブラウザーから送信されたデータを受け取る
       ↓
○ 受け取ったデータをPerlで編集・加工する
       ↓
○ 結果をHMTL形式でブラウザーに返す
ブラウザーにデータを入力してもらい、そのデータをサーバーに送信する為には、 HTMLのフォームのタグを使います。
[書式]
<FORM action="CGIファイルの指定" method="POST">

</FORM>
この「FORM」 タグに囲まれた中に下記のフォーム要素を配置していきます。
ここで入力されたフォームの情報を、FORM タグの 「action」 で指定されたCGIファイルに送信します。

フォーム要素の種類 タグの説明
<INPUT type=text> (テキストボックス) 文字の入力ボックスを表示します。
<INPUT type=radio> (ラジオボタン) 複数の選択肢の中から1つのみを選択させる場合
<CHECKBOX> (チェックボックス) 選択肢の中から複数を選択させる場合
<SELECT> (セレクトボックス) 複数の選択肢の中から1つの実を選択させる
<TEXTAREA> (テキストエリア) 複数行の入力ボックスを表示します。


フォームについては下記ページも御参照ください。
     → フォームタグについて



送信されたデータを受け取る場合は、POSTデータの場合は標準入力(STDIN)、
GETデータの場合は環境変数 $ENV{'QUERY_STRING'}を使います。
環境変数から受け取ったデータは下記のようなフォーマットで受信されます。
name=value&name=value&name=value&name=value ・・・

name にはフォーム要素の名前が、value にはフォームに入力されたデータが入ります。
また、value に日本語が入力された場合は、16進数の文字コードとして送信されます。
このままではデータが扱いにくいため、一旦、デコードという処理を行ない受け取ったデータを扱いやすく加工する必要があります。

[デコードの例]
# データがPOST形式の場合
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# データがGET形式の場合
} else {
   $buffer = $ENV{'QUERY_STRING'};
}

# データを name 別に分割する
@pairs = split(/&/, $buffer);

# データハッシュ形式に変換する(%FORM)
foreach $pair (@pairs) {
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;

   # 文字の処理
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   &jcode'convert(*value,'euc');

   $FORM{$name} = $value;
}
デコード処理を行なうと、データが $FORM{データ名} の形のハッシュ変数に入ります。
ハッシュでデータ名を指定することで、データを取り出せるため大変便利です。
デコード処理を行なわなくても、STDIN$ENV{'REQUEST_METHOD'} からデータを直接変数に入れて利用することは出来ますが、 複数のデータを受け渡す際には、デコード処理を行なった方がデータを扱いやすいと思います。







| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 有限会社ミスティーネット Inc. All Right Reserved.