![]() |
![]() |
![]() |
![]() |
管理運営:有限会社ミスティーネット |
|||
| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 | | |||
![]() |
![]()
![]()
![]()
|
HOME >> CGI について
■ 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> <body> TEST HTML </body> </html> END_HTML ■ データの受け渡し
CGIを使ったデータの受け渡し方法は第1章でもご紹介したように、下記のような流れになります。
○ ブラウザーから送信されたデータを受け取るブラウザーにデータを入力してもらい、そのデータをサーバーに送信する為には、 HTMLのフォームのタグを使います。 [書式]この「FORM」 タグに囲まれた中に下記のフォーム要素を配置していきます。 ここで入力されたフォームの情報を、FORM タグの 「action」 で指定されたCGIファイルに送信します。
フォームについては下記ページも御参照ください。 → フォームタグについて 送信されたデータを受け取る場合は、POSTデータの場合は標準入力(STDIN)、 GETデータの場合は環境変数 $ENV{'QUERY_STRING'}を使います。 環境変数から受け取ったデータは下記のようなフォーマットで受信されます。 name=value&name=value&name=value&name=value ・・・このままではデータが扱いにくいため、一旦、デコードという処理を行ない受け取ったデータを扱いやすく加工する必要があります。 [デコードの例]
# データがPOST形式の場合
デコード処理を行なうと、データが $FORM{データ名} の形のハッシュ変数に入ります。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; } ハッシュでデータ名を指定することで、データを取り出せるため大変便利です。 デコード処理を行なわなくても、STDIN や $ENV{'REQUEST_METHOD'} からデータを直接変数に入れて利用することは出来ますが、 複数のデータを受け渡す際には、デコード処理を行なった方がデータを扱いやすいと思います。 |