CGIがプログラムは、アクセスされると、プログラムの最初から最後までを実行して、
それで終わってしまいます。
これは、前回どういう操作をしたのかを、CGIは覚えてないということです。
例えば、カードゲームの場合なら、現在のカードの位置、誰がどのカードを持ってるかなどを
プログラムは覚えてないのです。
したがって、現在どういう状況なのかをプログラムに教える必要があります。
これには、いくつか方法があります。
1.の方法はさらに2つの方法があります。 サーバー側に保存するのと、クライアント側(アクセスした側)に保存する方法です。 前者は、掲示板の書き込みログみたいなものですが、ゲームの記録をいちいち保存するのは向いてないでしょう。 後者は、Web通販で誰がどんな買い物をしたか、などの記録に使われてます。 しかし、ここでは、これらの方法は説明しません。
2.の方法は、すべての状況ごとにプログラムを用意するのは、あまり現実的じゃないですが、 以下に紹介する(予定の)プログラムでは、初期設定と、その後の操作でプログラムファイルを分けます。 初期設定では、例えばゲームの駒をランダムに並べるなどのプログラムが必要ですが、 ゲームを始めた後は必要ないので、分けたほうが良いと思います。
3.の方法は、ゲーム盤のどこにどの駒があるのか、といった情報を毎回データとして送ります。 プログラムは、このデータを読んで、次に何をするのかを決めます。 このデータは、hiddenタグを使って、ブラウザでは見えないようにします (ページのソースを見ればバレますけど)。
それでは、具体的な例を見てみましょう。