Myu's Lab.   CGIでの文字列出力の仕方を説明します。

第一章:Hello, World!


この章では、どのようなプログラムでもまず基本となる文字列を出力するプログラムを示し、CGIは他のプログラムとどう異なるかを説明します。下記のソースを見てください。

#include <stdio.h>

int main(void){

    printf("Content-type: text/plain\n\n");
    printf("Hello, World!");

    return 0;

}
これは、実行するとブラウザー上にHello, World!と表示するだけのプログラムです。C言語の初心者の方でもわかるような簡単なプログラムですが、5行目に意味不明な文字列が出力されているのがわかると思います。これは、プログラムが出力するデータのタイプは何か?ということをブラウザーに判別させるために必要なもので、MIMEヘッダと言います。このプログラムでは普通のTEXTタイプのデータを出力するのでtext/plainですが、HTMLタイプのデータを出力する場合はtext/html、GIFの場合はimage/gif、といったように出力するデータによって使い分ける必要があります。また、

・Content-Type:のコロンのあとには必ず半角スペースを入れる
・ヘッダの後には必ず改行が二つ必要
・データ出力前の一番先頭で出力する(例外もあります)

と言うことに注意しなければなりません。MIMEヘッダを入れ忘れると、実行時に「500サーバーエラー」になりますので注意してください。サーバーエラーが出るようでしたら、スクリプト自身のエラーの可能性もありますが、まずMIMEヘッダが出力されているか確かめた方がいいでしょう。

このソースを、hello.cとして試しにサーバーにアップしてみましょう。そして、サーバのUNIXシェルにログインし、hello.cをアップしたディレクトリをカレントディレクトリにした後、
telnet% gcc -o hello.cgi hello.c
と打ち(telnet%はプロンプトです)何もエラーが出なければコンパイル成功です。

では、実際にブラウザーでスクリプトのURLを指定し、実行してみましょう。
Hello, World!
と出力されましたか?もし「Internal Sever Error」になるようでしたら、上記の注意点を確かめて再度挑戦してみてください。

□次の章へ


Copyright(C) 1996-2005 Yuto Ikeno All rights reserved.