このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

WebSTAR の CGI のセッション管理

発言者:田中求之
( Date Friday, August 25, 2000 13:42:03 )


HTTP にはセッションという概念がないため、同一人物のアクセスの履歴を追
いかけたり、連続的なサービスを行おうとする場合には、Cookie や HIDDEN
による埋め込みなどを使って疑似的なセッション管理の仕組みを作る必要があ
ります。

授業関連の CGI でセッション管理の必要が出てきたんで作っていたのですが、
WebSTAR の場合なら、ユーザー定義アクションを使えば、笑っちゃうほど簡単
にセッション管理が可能になるんですね。また Cookie も不要だし、HIDDEN
を使ったトラッキング ID の埋め込みも不要なので、iMode などの端末ブラウ
ザからのアクセスの場合でも、ちゃんとアクセス履歴を追いかけられるんじゃ
ないかと思います(これは授業が始まったら、学生に検証してもらう予定)。

Login の手続きを踏んでもらうことでユーザーに対しトラッキング用の ID を
割り当て、それをもとにユーザーの行動を追跡する、という基本的な考え方に
は何ら違いはないのですが、WebSTAR のユーザー定義アクションを使うと、こ
の ID を URL に、ディレクトリとして埋め込んでおけるわけです。

トラッキング用の CGI を .trc の拡張子のアクションで用いるとして、ログ
インの際に、たとえば、000825125018-88-16 という ID を割り当てたとしま
す。このユーザーに対しては、その後は、すべて

 http://your.host/000825125018-88-16/mypage.trc

のように、000825125018-88-16 ディレクトリ内へのアクセスになるように指
示を返し、CGI 側では、script_name に渡されるディレクトリをもとにユーザー
を識別すれば良いことになります。

ユーザー定義アクションのアクセスの場合には、WebSTAR は拡張子のチェック
だけ行って、その path のファイルが存在するかどうかのチェックは一切行い
ません。ですから、000825125018-88-16 というフォルダを実際に作る必要は
まったくありません。

えっと、言葉にすると面倒なようですが(暑いのでじっくり考えられないし)、
スクリプトを見てもらえば簡単なことはわかると思います。

夕方のメンテナンスの時にでも、サンプルを登録しておきます。


改めて、WebSTAR のユーザーアクションの便利さを思い知りました (^_^)

田中求之 さんからのコメント
( Friday, August 25, 2000 16:40:34 )

簡単なサンプルを以下に登録しておきました。

→  session_sample.sit

石津@RJC さんからのコメント
( Friday, August 25, 2000 18:07:34 )

ということでACTION定義は便利なのですが、拡張子にひもづく管理という
1点で別の不便さもあったりします(まぁ使い方なんですけど)。

例えばよくあるパターンとしてCGIで受け入れするデータを必入力チェック
をかけておくことがあります。この場合入力されなかった不足分を再度入力
するために「ブラウザのバックボタンで戻る」という手法を利用すること
があります。

この時にACTION定義上のURLに戻る場合には問題ないのですが、その
拡張子が異なる場合(ACTION定義されていない拡張子のページ)、セッション
が別と判断され、ブラウザがページを再ロードしてしまうようになります。
(わかりにくくてすいません)

つまり、アンケートなどに答えようとして
(.ankがACTION定義されている拡張子とします)

1 http://www.yourdomain.com/ank/sample.ank を開いてFORMを送信
2 http://www.yourdomain.com/ank/sampleget.ank が受信して必入力チェックでエラー
3 http://www.yourdomain.com/ank/sample.ank にバックボタンで戻る

このケースの場合sample.ankのページで入力した内容はバックで戻った後も保持されますが

1 http://www.yourdomain.com/ank/sample.html を開いてFORMを送信
2 http://www.yourdomain.com/ank/sampleget.ank が受信して必入力チェックでエラー
3 http://www.yourdomain.com/ank/sample.html にバックボタンで戻る

このようにhtmlファイルからACTION定義されたプログラムにFORM送信した場合には
WebStar4.0以降では、バックボタンで戻った時に入力した内容は保持されず、sample.html
が再度読み込まれてしまいます。
どうやら4.xからセッション管理方法が変わったのだと思います。

微妙な変更なのですが、ユーザからするといっぱい入力した内容が消えてしまうのは
大きな問題なので、結構影響は大きいものでした。

本来のこのスレッドの主旨と異なるかもしれませんがTips?として書かせていただきました。
田中さん、すいません。

田中求之 さんからのコメント
( Friday, August 25, 2000 18:25:08 )

>どうやら4.xからセッション管理方法が変わったのだと思います。

あ、これは気がつきませんでした。4.0 って 68K では動かないので、
ほとんど使っていないものですから。

入力ミスがあったときの差し戻しに気をつけないといけないってのは
ちょっと困ったことになるなぁ。まぁ、私の場合、ユーザー定義アク
ションを使う場合には、徹底して、その内部で(つまりアクションの
拡張子のページで)処理を行う傾向があるので(その意味では、この
会議室は私の通常のパターンから外れているんですが (^_^;; )、なん
とかなるかなって感じではありますが。

そういえば、今回、CGI のテストで久しぶりに Netscape を使った
んですが(Explorer はバックグランドのアプリケーションの息の根を
止めてしまうので (^_^;; )、最新の 4.75 って、作画速度が速くなって
ますねぇ。デバッグが快適に行えました。スタイルシートの処理が
IE 5 並になってくれたら、Netscape をメインに戻すんだけどなぁ…