アクセスカウンタ

簡単なアクセスカウントをするページを作ってみましょう。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int n;
    ifstream f("count.dat");  // count.dat を入力用に開き,f とする
    if (f) {                  // もし開けたなら(count.dat が存在したなら)
        f >> n;               // f を読んで n に代入する
        f.close();            // f を閉じる
    } else {                  // もし開けなかったなら
        n = 0;                // n は 0 とする
    }
    n++;                      // n を 1 増やす
    ofstream g("count.dat");  // count.dat を出力用に開き,g とする
    if (g) {                  // もし開けたなら
        g << n;               // n を出力する
        g.close();            // g を閉じる
    }
    cout << "Content-type: text/html\n\n";
    cout << "<h1>こんにちは</h1>\n";
    cout << "<p>あなたは" << n << "人目のお客様です。\n";
}

これを count.cc というファイル名で保存し,次のようにしてコンパイルしてください。

g++ -Wall count.cc -o count.cgi
chmod 4755 count.cgi

この chmod(``change mode'')はファイルのモードを変える命令です。 特に 4755 は,このファイル count.cgi の持ち主(あなたです!)の立場で実行することを意味します。 このようにしておかないと, CGI は WWW サーバの立場で実行されてしまいますので, あなたのディレクトリの中にあるカウンタを更新することができません。

★参考:close() はそれを囲むブロック(この場合は main{ ... })の終わりで自動的に実行されるので, 実際には省略してもかまわないことが多いのですが, 上の例は同じファイルを読み込みモードで開き, 再度書き込みモードで開いているので, その間にいったん閉じる操作をしておくほうが安全です。

リンクはご自由にどうぞ。

松阪大学 奥村晴彦 okumura@matsusaka-u.ac.jp

Last modified: Thu Dec 16 22:44:37 1999