2007年2月17日土曜日

自分が書いたとおり

アクセスログをとるCGIは自分でプログラムを書いているのだが,以前のアクセスを記録するためにクッキーを利用している.
ところがクッキーがうまく機能していない状況があった.

ずっとナゾのままで,でもまぁ別にいいやと思っていた.
しかし,おととい夜,ホテルのネットコーナーで書いているときに気づいた.

ホテルで書き込むとき,自分のアクセスでカウントアップしないようにしたのだが,そのときアクセスログを見たら,まさにその状況になっていた.
サイト内移動の場合カウンタが増えないようになっていて,それを再現するアクセス方法でアクセスし,自分でカウンタ増やさないようにしたら,クッキーがうまく動作していないのだ.

カウントアップのがあったところで,クッキーを保存するが,カウントアップがない「サイト内移動」ではクッキーはいじらないようにプログラムしていた.
これはある意味当然のことである.
その「サイト内移動」のところに,ミスがあった.サイト内移動は referer の文字列を参照して判断する.

つまり自分がホテルからつないだときは,「サイト内移動状態」に見せかけてアクセスしたが,そうするとクッキーが保存されない状態だったのだ.

プログラムのバグに気づき,帰ってから直したら,思い通りに動くようになった.

プログラムとは常に「人間が書いたとおりに動く」ものだということを再認識.

0 件のコメント:

コメントを投稿

スパム対策のため,コメントは,承認するまで表示されません。
「コメントの記入者:」は「匿名」ではなく,「名前/URL」を選んで,なにかニックネームを入れてください.URL は空欄で構いません.