NOEMBLEM/エンブレムが設定されていません。

メールの詳細(トピック表示)

PWSをWebサーバーとしてCGIをC言語で

投稿者:Giantsさん  2003/12/10 12:56  MLNo.376   [メール表示]

こんにちは Giantsともうします。 
どこで質問していいかわからずここでさせてもらいます。
Webプログラムを勉強しようとしてマイクロソフト社のPWSをパソコンにインス
トールして
Webサーバーとか、CGIプログラムがどう動くのか仕組みをまず理解しようとしま
した。
 
ここからCGIプログラムをC言語でかいたソフトで理解しようとして

// cgi01.c
#include <stdio.h>

int main()
{

printf("Content-type:text/html\n\n");
printf("<HTML>\n");
printf("<HEAD>\n");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=Shift_JIS\">\n");
printf("<TITLE>cgi01</TITLE>\n");
printf("</HEAD>\n");
printf("<BODY BGCOLOR=\"#FFFF00\">\n");
printf("これはCGIで出力しています\n");
printf("</BODY>\n");
printf("</HTML>\n");

return 0;
}
このコードをコンパイルするとcgi01.exeやその他ファイルが出来ますが、cgi01.
exeファイルの
拡張子をcgi01.cgiファイルとしてWebブラウザから
http://localhost/test/cgi01.cgiと指定すると
ちゃんと画面が出ました。
つぎに
// cgi02.c

#include <stdio.h>

int main()
{
char szBuf[256];
int i;
char c;

for (i = 0; (i < 255) && (c = getchar()) != EOF; i++) {
szBuf[i] = c;
}
szBuf[i] = '\0';

printf("Content-type:text/html\n\n");
printf("<HTML>\n");
printf("<HEAD>\n");
printf("<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=Shift_JIS\">\n");
printf("<TITLE>cgi02</TITLE>\n");
printf("</HEAD>\n");
printf("<BODY BGCOLOR=\"#FFFF00\">\n");
printf(szBuf);
printf("</BODY>\n");
printf("</HTML>\n");


return 0;
}

のコードを先と同じようにコンパイル及び拡張子変更の手続きをして以下のhtmファ
イルから
IEブラウザで実行するのですがcgi02が実行されないみたいです。
予想ではcgi02の画面が出ると思うのですが。
以下のhtmファイルは
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>test</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="http://localhost/test/cgi02.cgi">
氏名:<INPUT TYPE="TEXT" SIZE="40" NAME="namae"><P>
住所:<INPUT TYPE="TEXT" SIZE="40" NAME="jusho"><P>
性別:<INPUT TYPE="radio" NAME="SEX" VALUE="MALE">男
<INPUT TYPE="radio" NAME="SEX" VALUE="FEMALE">女<P>
性格:<INPUT TYPE="checkbox" NAME="ONWA">穏和
<INPUT TYPE="checkbox" NAME="INKEN">陰険<P>
<INPUT TYPE="SUBMIT" VALUE="送信">
</FORM>
</BODY>
</HTML>

です。

cgi01はうまく表示されたがcgi02が実行されないのはなぜかわかりません。
htmファイルは別のフォルダに置いてますが
アドバイスお願いします。

私のパソコンはOSはWindows98です。


このエントリーをはてなブックマークに追加


  • MLNo.378   さん  (0) 2003/12/11 10:28  [メール表示する]

    天野です。

    うまく実行されないとはどういう状態ですか?
    サーバーのエラーが出るとかcgiは呼び出されているが、結果が
    正しくない(望んでいる結果ではない)とか。

    あと、余計なお世話ですがszBufはCONTENT_LENGTHからサイズを調べて
    malloc()でメモリの割り当てをしておいた方が安心です。


    From: Giants <haseytty@…>
    Subject: [beginers:0376] PWSをWebサーバーとしてCGIをC言語で
    Date: Wed, 10 Dec 2003 12:56:44 +0900 (JST)

    > こんにちは Giantsともうします。 
    > どこで質問していいかわからずここでさせてもらいます。
    > Webプログラムを勉強しようとしてマイクロソフト社のPWSをパソコンにインス
    > トールして
    > Webサーバーとか、CGIプログラムがどう動くのか仕組みをまず理解しようとしま
    > した。
    >  
    > ここからCGIプログラムをC言語でかいたソフトで理解しようとして
    >
    > // cgi01.c
    > #include <stdio.h>
    >
    > int main()
    > {
    >
    > printf("Content-type:text/html\n\n");
    > printf("<HTML>\n");
    > printf("<HEAD>\n");
    > printf("<meta http-equiv=\"Content-Type\" content=\"text/html;
    > charset=Shift_JIS\">\n");
    > printf("<TITLE>cgi01</TITLE>\n");
    > printf("</HEAD>\n");
    > printf("<BODY BGCOLOR=\"#FFFF00\">\n");
    > printf("これはCGIで出力しています\n");
    > printf("</BODY>\n");
    > printf("</HTML>\n");
    >
    > return 0;
    > }
    > このコードをコンパイルするとcgi01.exeやその他ファイルが出来ますが、cgi01.
    > exeファイルの
    > 拡張子をcgi01.cgiファイルとしてWebブラウザから
    > http://localhost/test/cgi01.cgiと指定すると
    > ちゃんと画面が出ました。
    > つぎに
    > // cgi02.c
    >
    > #include <stdio.h>
    >
    > int main()
    > {
    > char szBuf[256];
    > int i;
    > char c;
    >
    > for (i = 0; (i < 255) && (c = getchar()) != EOF; i++) {
    > szBuf[i] = c;
    > }
    > szBuf[i] = '\0';
    >
    > printf("Content-type:text/html\n\n");
    > printf("<HTML>\n");
    > printf("<HEAD>\n");
    > printf("<meta http-equiv=\"Content-Type\" content=\"text/html;
    > charset=Shift_JIS\">\n");
    > printf("<TITLE>cgi02</TITLE>\n");
    > printf("</HEAD>\n");
    > printf("<BODY BGCOLOR=\"#FFFF00\">\n");
    > printf(szBuf);
    > printf("</BODY>\n");
    > printf("</HTML>\n");
    >
    >
    > return 0;
    > }
    >
    > のコードを先と同じようにコンパイル及び拡張子変更の手続きをして以下のhtmファ
    > イルから
    > IEブラウザで実行するのですがcgi02が実行されないみたいです。
    > 予想ではcgi02の画面が出ると思うのですが。
    > 以下のhtmファイルは
    > <HTML>
    > <HEAD>
    > <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
    > <TITLE>test</TITLE>
    > </HEAD>
    > <BODY>
    > <FORM METHOD="POST" ACTION="http://localhost/test/cgi02.cgi">
    > 氏名:<INPUT TYPE="TEXT" SIZE="40" NAME="namae"><P>
    > 住所:<INPUT TYPE="TEXT" SIZE="40" NAME="jusho"><P>
    > 性別:<INPUT TYPE="radio" NAME="SEX" VALUE="MALE">男
    > <INPUT TYPE="radio" NAME="SEX" VALUE="FEMALE">女<P>
    > 性格:<INPUT TYPE="checkbox" NAME="ONWA">穏和
    > <INPUT TYPE="checkbox" NAME="INKEN">陰険<P>
    > <INPUT TYPE="SUBMIT" VALUE="送信">
    > </FORM>
    > </BODY>
    > </HTML>
    >
    > です。
    >
    > cgi01はうまく表示されたがcgi02が実行されないのはなぜかわかりません。
    > htmファイルは別のフォルダに置いてますが
    > アドバイスお願いします。
    >
    > 私のパソコンはOSはWindows98です。
    >
    > --[PR]------------------------------------------------------------------
    > 1 粒 に ブ ル ー ベ リ ー 果 実 ★ 1 6 0 個 分 の パ ワ ー ! !
    > ……………………………………………………………………………………………
    >  疲れ目やかすみ目が気になる方(--) パソコンを長時間使用される方(^^)
    >  全国55万家族が愛用中の「ブルーベリーアイ」1,480円をお試しください!
    >     http://ad.freeml.com/cgi-bin/ad.cgi?id=cuEVD
    > ------------------------------------------------------------------[PR]--
    > <GMO GROUP> Global Media Online www.gmo.jp
    >
    >


メールへの返信はMLのメンバーしかできません。

更新順メールリスト