制作者の活動(PR)。

アイドル女優・堀北真希ちゃんにうさ耳を着けた制作者のオリジナルキャラクタ。次
主な作品

人気女優をモデルにした創作キャラクタのイラスト例とそれを組み込んだアニメーション動画

CGIへのデータの渡し方。

CGIへのデータの渡し方・目次。

CGIに渡されるデータの形式。

クエリの形式。

CGIに対して、たとえば掲示板なら投稿文,氏名などの情報を引渡すでしょう。

また、検索機能を持つCGIなら、検索対象となるキーワードを情報として渡すことになるでしょう。

ウェブでは、このようなデータ(クエリといいます)について、以下のような形式で渡します。

クエリ名とは、データの種類を判別するためにCGI側が付けている名前で、クエリ値は実際に引渡す文字列です。

たとえば、氏名の入力について、CGI側が「name」というクエリ名を与えたところ、ウェブブラウザから「NAKAMURA」というクエリ値が送られてきた場合は、CGIには以下のようなクエリが引渡されます。

日本語データを引渡す場合の注意点。

ところが、日本語の文字列「中村」を引渡そうとすると、以下のように訳の分からない文字列が引渡されます(シフトJISコードの場合)。

実は、クエリ値において、使ってはいけない文字や文字コードが決められていて、日本語文字は大半が使ってはいけない文字コードとなっているのです。

そこで、こういった文字は、一バイトづつ「%XX」という形に自動的に変換されるという訳です。

CGI側は、送られてきたデータを決まりに従って復元することになります。

クエリに「/」が含まれる場合の注意点。

<a>要素のhref属性値及び<form>要素のaction属性値にクエリを持ったURLを記述する場合、最低でもクエリ内の/」だけはURLエンコードしておかないといけません

クエリ内は「/」以外の文字も半角英数字以外は全てURLエンコードしなければならないことになっておりますが、特に「/」がクエリに入っていると相対URLの解釈が不正になる事があります。

具体例として、下位ディレクトリ内のCGIスクリプトにクエリを付けた例を挙げておきます。

尚、<input>要素, <textarea>要素などによるクエリの引渡しではブラウザによって自動的にURLエンコードが行われますので、この様な対策は不要です。

クエリが複数ある場合。

クエリが複数ある場合、区切り記号で区切られます。

例えば、区切り記号を「;」として、三つのクエリを記述する場合は、以下のようになります。

区切り記号は多くの場合「&」が用いられますが、これは本当は好ましくはありません。

なぜなら、HTMLタグの属性値に書かれた場合、実体参照と紛らわしいからです。

HTMLの規格としては、区切り記号には「;」を用いるのが望ましいとされております。

CGIを作る場合はこちらを採用するようにしましょう。

但し、多くのウェブブラウザは「&」を区切り記号として用いているので、どちらでも問題なく動作するようにすれば良いのです。

クエリ引渡しの方法。

さて、クエリの列をどうやってCGIに引渡すのでしょう。

この方法には二通りのメソッドが用意されております。

GETメソッド

GETメソッドは、URLの後ろにクエリを「?」に続いて書くことでデータを引渡すやり方です。

GETメソッドでデータを引渡すにはフォーム(<form>要素)を用いる方法だけでなく、固定されたデータならhref属性値にクエリを付けたURLを与えた<a>要素でも引渡しができます。

受取る側は、URLの後ろのクエリ列を切出すことで受取れますが、実際にはクエリ列だけの部分が引渡されるため切出す手続きもせずに受取れます。

GETメソッドは非常に簡単にデータの引渡しができるのが利点ですが、欠点としてあまり長いクエリ列は引渡せない事と、URLの後ろに直接記述されるのでクエリの内容が大っぴらに公開されてしまう事が欠点です。

POSTメソッド

POSTメソッドは、パスとは別にデータを送る方法です。

POSTメソッドでデータを引渡すには必ずフォーム(<form>要素)を用いなければなりません。

受取る側も特別な方法で入力しなければなりません。

その代わり、大量のデータが引渡せることと、URLにクエリが反映されないという長所があります。

しらぎくのウェブサイト作成入門サイトマップ

ページ外へのご案内。

marguerite.site@gmail.com