これは、ANSI C です
これは、友人の HomePage で、パスワード付き HomePage を製作したときに作成しました
パスワードを要求して、 Sever 側に渡されて、このプログラム内に埋め込まれた文字列と一致するかどうかを、チェックしています
パスワードは、ソースプログラム の、 26 行目です
このソースでは、パスワードは、 maxwell となっています
ANSI C の strcmp という関数でチェックさせています
プログラム内に埋め込む文字列は、
デコードがしたくないので、通常の半角文字だけにしています
FORM タグは
<FORM ACTION="/cgi-bin/pass_chk.cgi" METHOD="GET">
<CENTER><INPUT TYPE="password" NAME="PASSWRD" SIZE="10"></CENTER><BR>
<CENTER><INPUT TYPE="submit" VALUE="入力終了">
<INPUT TYPE="reset" VALUE="書き直す"></CENTER>
でいいでしょう(^_^)
METHOD が GET より
環境変数 QUERY_STRING から、このプログラムへ文字列が、
変数=値&変数=値
として渡されます
この方法で、どれぐらいセキュリティーが高いか、知りませんが(多分、相当低いでしょう)、いたずら書き防止だけなので、こんなもんで良いでしょう(^_^)
皆さんが、 CGI プログラムを、作るときに参考になればいいと思います
このソースをコンパイルして、通常は CGI プログラムの拡張子は、 .cgi なので、
拡張子を .cgi に変更すれば、出来上がりです
パスワードの部分は、自分たちで、変えてね(^_^)
著作権は放棄します、プログラムの実行・改変においては、各自自分の責任でしてください。
- 利用対象者
-
- プログラミングの経験が少しある。
- C のソースをコンパイルできる。
- C を少し知っている。
- download
-
- source file
- pass_chk.c text file (1,679byte)
リターン・コードは、UNIX 系です
- compiled by Borland Turbo C++ ver1.01
- pass_chk.zip zip file (6,642byte)
使い方、ソースの説明など
まず、 CGI では、上記のフォームからのデータは、環境変数 QUERY_STRING に納められてやってきます
CGI では、それ以外にも、幾つかの環境変数を使っています
このプログラムでは、その中の
REMOTE_HOST , REMOTE_ADDR , REMOTE_IDENT , REMOTE_USER を参照します
ちなみに
REMOTE_HOST は、CGI プログラムを呼び出したコンピュータ名
REMOTE_ADDR は、CGI プログラムを呼び出したコンピュータの IP アドレス
REMOTE_IDENT , REMOTE_USER は、CGI プログラムを呼び出したユーザー名
です
環境変数が、きちんと設定されていないとエラーの原因となるかもしれません
(自分の大学の WWW-Sever では、エラーになっています)
このプログラムは、環境変数を ANSI C の getenv() 関数を使って取得していますが、利用できない処理系もあります
そういうときは、CGI でパスワード付き HomePage Part2
を利用しましょう(^_^)
ソースの説明
13 - 24 行目までは、HTML のヘッダなどを、出力しています
CGI で、標準出力されたデータが、ブラウザーへ渡されます
標準出力の最初に、それをどう解釈すべきかを、伝えるの必要があります
13 行目が、それです
13 行目は、これから、標準出力するデータは、テキストの HTML ファイルとして、扱ってくれと言っています
この CGI ヘッダは、空行で区別するので、\n\n となっているでしょ
26 行目が、送られてきた、データを比較しています
上記のフォームから、送られてくるとすれば
METHOD が GET なので、環境変数 QUERY_STRING に、変数=値 として、送られてきます
変数が複数なら、 & を、はさんで送られてきます
変数1=値1&変数2=値2&......
12 行目で、環境変数 QUERY_STRING を参照しています
26 - 51 行目は、password が正しいときの処理で
52 - 60 行目が、password が間違っていた処理です
注意:そのままでは、使えません
最低でも、
24 行目、31 行目、50 行目、53 行目、59 行目は、自分にあわせて書き換える必要があります
mail to active@window.goukaku.com