ビギナーズ CGI

 初歩から始める初心者向けPerl-CGI講座  

| トップページ | CGI設置 | CGI作成 | 作成事例 | 設置用語 | 作成用語 | 関数リファレンス | FAQ | お問合せ |
  
CGIの設置方法
フリーで配布されているCGIを設置する際の手順や注意事項などの説明です。

CGI作成の初歩
初めてCGIを作る方向けの手順を簡単な例で説明しています。

CGI作成ヒント集
こういう事をする時は、どのように行えばいいのか?など具体的な事例を紹介します。

CGIの設置に関する用語
CGIの作成に関する用語
CGIの設置や作成時に使われている用語や関連知識を掲載しています。

設置に関するFAQ
作成に関するFAQ
設置や作成をする際に起こりがちなトラブルの説明と、よくある質問とその回答を掲載しています。


 
 

CGI 作成の初歩
 HTMLページを表示してみる  文字列の置き換え
 複数行のHTMLページを表示  フォームから入力された値を表示
 ソース内にコメントを書く  ファイルに書き出す
 変数を使った簡単な計算  ファイルから読み込む
 条件式を使って分岐する  フォーム入力からファイルに書き出す
 文字列の扱い方を練習  サブルーチンを使用してみる
 ループを練習 (繰り返し処理)  現在の時刻を取得する
 配列の簡単な使い方  ファイルの簡単な操作をする
 配列の操作を行ってみる  不特定が書き込むファイルの排他処理
 文字列の検索と取出し  CGI から画像を表示する



12. フォームから入力された値を表示する


フォームからの入力を受け取る場合 split を使用して文字を区切るので、
まずは split を使った文字列の区切り方を説明します。

= (イコール) を区切り文字として、その前後に分けるやり方です。
ここではイコール記号を区切り文字としていますが、他の文字でも同様に行えます。


実行結果
田中
佐藤
大西
斉藤

文字列中の = 部分で区切り、用意された変数に先頭から順に値が入っています。



【書式】
(変数1,変数2,変数3・・・) = split (/区切り文字/, 対象の変数)

例 変数 $string に入っている文字列を & で区切って $aaa $bbb $ccc に入れる
($aaa,$bbb,$ccc) = split (/&/,$string);





次にフォームから CGI に何らかの値を送信し、それをそのまま画面表示してみます。
フォームから直接受け取ったデータはどのようになっているのでしょうか?
下のようなフォームを使って、CGI に選択されたボタンのデータを送ってみます。


1 2 3


ラジオボタン1の名前は sentaku 送信する値は 1
ラジオボタン2の名前は sentaku 送信する値は 2
ラジオボタン3の名前は sentaku 送信する値は 3
送信メソッドは POST
送信先は サンプルのCGI へ


フォームの例は以下のようになっています。


送信先の CGI のソースは以下のようになっています。



実行結果
sentaku=1&submit=%91%97%90M%82%B7%82%E9


実行結果で表示された内容は以下のようになっています。
日本語部分がURLエンコードされ記号になっていますが、フォームからの入力を
受け取れた事が分かると思います。

フォーム要素1=要素1の値&送信ボタン=送信ボタンの値


これのフォーム要素を増やしていくと、下のように受け取れます。

フォーム要素1=要素1の値&フォーム要素2=要素2の値&フォーム要素3=要素3の値&・・・・送信ボタン=送信ボタンの値


フォームでつけた name と、そのイコール(=) でつながれ、それぞれの要素が & で区切られているのが分かると思います。


POST メソッドで送信されたデータを read(STDIN, $formin, $ENV{'CONTENT_LENGTH'}); の部分で、
送信された長さ分 ( $ENV{'CONTENT_LENGTH'} ) 標準入力から読み込み、変数 $formin に入れています。
これが GETメソッドの場合の内容は $ENV{'QUERY_STRING'} に格納されていますので、その内容を直接 split で
区切り、各変数へ格納すれば結構です。


受け取ったデータを使えるようにする


この項の先頭で紹介した split を使い、受け取ったデータを使える形にします。
ここでは区切る為の split 区切った値を格納する 連想配列 それらの処理を要素
の数だけ繰り返す foreach を使って行いますので、下のイメージと見比ながら
順に処理を追って見てみましょう。





入力するフォームは先の手順で使ったフォームを使いますが、この方法で行えば
フォームの要素が増えても、同じように扱う事ができます。
下のサンプルソースでは各処理の右側に、どのような処理を行っているかのコメントを
入れてありますので、それも参考にしながら処理を追ってみてください。


実行結果
1
%91%97%90M%82%B7%82%E9


受け取ったデータをフォーム要素の名前を使った連想配列によりアクセスできる状態になりました。
これが出来れば、フォームからの送信により CGI 側で処理を分けたりする事ができます。


このフォームからの受け取りは難しそうに思えますが、実際に個々で行っている
処理自体は簡単なものですので、どのデータがどこにあるのか、又連想配列の
使い方に注意して流れを見て下さい。

次項はファイルに書き出す処理を行ってみます。



Beginner's CGI  - Copyright (C) 2003 aimix. All Rights Reserved -