[Delphi:89520] IntraWebでのSessionを使う値の保存

395 views
Skip to first unread message

Yamamoto Satoshi

unread,
Apr 10, 2007, 8:09:42 AM4/10/07
to Del...@ml.users.gr.jp
こんにちは、

IntraWebを使用してSession管理をしたいのですが
やり方がわかりません。
ご存じの方、教えてください。


具体的には簡単なチャットを作っていて
名前の入力欄に

個々人のブラウザで入力した値を
リロード後や、
再度URLを訪問したときに
保持させたいのです。

よろしくお願いします。


-----
Yamamoto Satoshi
sat...@big.or.jp


drea...@ace.ocn.ne.jp

unread,
Apr 11, 2007, 1:45:26 AM4/11/07
to Del...@ml.users.gr.jp
渡辺@奈良です

的外れな事を言っているのかも知れませんが
Interbaseの話題で埋もれてしまいそうなので
私の乏しい知識で・・・

>IntraWebを使用してSession管理をしたいのですが

Intraweb は基本的に自動的にSession管理されているので

(補足)
Intraweb 8以下だと、DelphiPro版の付属のIntrawebでは
セッション管理が出来ません
Intraweb 9以降を利用するか、以前のフルバージョンを使用する必要があります

>個々人のブラウザで入力した値を
>リロード後や、

この程度の事でしたら

TIWUserSession = class(TIWUserSessionBase)
private
FName: String;

などで変数をセッション管理下に置くことで
個々のセッション変数を参照する事は出来ると思うのですが
セッションを閉じてしまうと消えてしまうので

>再度URLを訪問したときに
>保持させたいのです。

保持させたいというのが、前回の終了状態を復元したいという事でしたら
データーベースか何かに前回の状態を保存しておかないといけないと思うので
たとえば、ログインなどを取り入れてユーザ名で識別するか
初回アクセス時にクッキーを書き込んでおいて
個々の識別をすれば良いのではないでしょうか?

このあたりになると、Intraweb ではという話ではなくなるのですが

IWServerController の OnNewSession イベントとかで
下記のようにクッキーを書き込んでおいて(クッキー情報がない場合)

MyCookies := TStringList.Create;
try
MyCookies.Add('CookieUser=' + WebApplication.AppID);
WebApplication.Response.SetCookieField(
MyCookies,
'',
'',
Now + 365,
False
);
finally
MyCookies.free;
end;

何かのタイミングで書き込んだクッキーを

WebApplication.Request.CookieFields.Values['CookieUser'];

で読み込んで、このキーを元にデーターベースを参照すれば
個々の識別は可能なので目的の事は出来ると思います

もし、IWServerController の SessionTrackingMethod で
tmCookie を指定しているようでしたら
Intraweb_~ の~の部分に AppName が付いたクッキーフィールドが
自動的に作られているので
こちらを参照して個々を判定しても良いかも知れません
ただし、有効期限が短いのでそれらの考慮はいるかも知れません


Yamamoto Satoshi

unread,
May 31, 2007, 11:55:28 PM5/31/07
to Del...@ml.users.gr.jp
こんにちは
ものすごく返事が遅くなってしまったのですが
渡辺様、お返事ありがとうございます。

ほとんど手探り状態ですが
ようやく、IntraWebの感触がわかってきたところです。

> 送信者 "drea...@ace.ocn.ne.jp" <drea...@ace.ocn.ne.jp>
> 日時 2007/04/11 14:45:26
> 件名 [Delphi:89526] Re: IntraWebでのSessionを使う値の保存
> ----
> 渡辺@奈良です


> >IntraWebを使用してSession管理をしたいのですが
> Intraweb は基本的に自動的にSession管理されているので
>
> (補足)
> Intraweb 8以下だと、DelphiPro版の付属のIntrawebでは
> セッション管理が出来ません
> Intraweb 9以降を利用するか、以前のフルバージョンを使用する必要があります

私の環境はBDS2006ですが、スプラッシュウィンドウを見ると
IntraWeb 8 のようですね。
IntraWeb 9 というのは、メーカーから購入するものなのですか?
"以前のフルバージョン"とは、一体なんのことなのでしょうか?

あと、教えていただいてわかってきました。
セッション管理というものは、そもそも
私の必要としている機能ではないようですね。

セッション=ログイン中とわかるもの
というイメージでしょうか。

確か、PerlではCGI動作中にページ遷移しても
変数の値をメモリ保持できる場所だったような気がする。

先に書きました通り、簡単なチャットプログラムで
Aさんが自分のPCで書き込んだ時に、名前欄に[A]と記憶されていて
Bさんが別のPCで書き込んだ時に、名前欄に[B]と記憶されている。

ただ、これだけの仕組みを実装したいだけですので
セッションはいらない、という認識であっていますか?

> 保持させたいというのが、前回の終了状態を復元したいという事でしたら
> データーベースか何かに前回の状態を保存しておかないといけないと思うので
> たとえば、ログインなどを取り入れてユーザ名で識別するか
> 初回アクセス時にクッキーを書き込んでおいて
> 個々の識別をすれば良いのではないでしょうか?

そうですね。クッキーですね。

> このあたりになると、Intraweb ではという話ではなくなるのですが
> IWServerController の OnNewSession イベントとかで
> 下記のようにクッキーを書き込んでおいて(クッキー情報がない場合)
> MyCookies := TStringList.Create;
> try
> MyCookies.Add('CookieUser=' + WebApplication.AppID);
> WebApplication.Response.SetCookieField(
> MyCookies,
> '',
> '',
> Now + 365,
> False
> );
> finally
> MyCookies.free;
> end;
> 何かのタイミングで書き込んだクッキーを
> WebApplication.Request.CookieFields.Values['CookieUser'];
> で読み込んで、このキーを元にデーターベースを参照すれば
> 個々の識別は可能なので目的の事は出来ると思います

データベースは使っていないのですが
どのタイミングで何をどうすればいいのでしょうか?

現在は、
procedure TIWMainForm.IWAppFormRender(Sender: TObject);
ここで読み込み処理をしています。

> もし、IWServerController の SessionTrackingMethod で
> tmCookie を指定しているようでしたら

意味がわかりませんが、これは何の効果があるのでしょうか?
現在はtmURLになっていますが、
何を設定すればいいのかがわかりません。

> Intraweb_~ の~の部分に AppName が付いたクッキーフィールドが
> 自動的に作られているので

『Intraweb_~ の~の部分』の部分とは、何の意味なのでしょう?

> こちらを参照して個々を判定しても良いかも知れません
> ただし、有効期限が短いのでそれらの考慮はいるかも知れません

初歩的なところがわからなさすぎて
内容が理解できなくて、すいません。

-----
Yamamoto Satoshi
sat...@big.or.jp


TAKAHASHI, Tomohiro

unread,
Jun 1, 2007, 1:35:21 AM6/1/07
to Del...@ml.users.gr.jp
高橋(智)です。

Yamamoto Satoshi wrote:
snip

> 私の環境はBDS2006ですが、スプラッシュウィンドウを見ると
> IntraWeb 8 のようですね。
> IntraWeb 9 というのは、メーカーから購入するものなのですか?
> "以前のフルバージョン"とは、一体なんのことなのでしょうか?

BDS2006のProfessional版に同梱されている IntraWeb は、たしか機能制限版のはずなので

・BDS2006 Enterprise版 を購入すると同梱されている IntraWeb を使用する

・BDS2006用の IntraWeb 8.0 のライセンスをベンダーから購入する
http://www.atozed.com/IntraWeb/Download/Files/Archives/80.EN.aspx

という選択肢があると思います。

最新版の IntraWeb 9.0.x は、まだちょっと不安がありそうです。
9.0.16 がテスト中のようですし...
http://www.atozed.com/IntraWeb/Download/Files/Borland.EN.aspx

--
高橋智宏

Yamamoto Satoshi

unread,
Jun 2, 2007, 11:02:33 AM6/2/07
to Del...@ml.users.gr.jp
こんばんは、高橋様
お返事ありがとうございます。

Delphi2007の
VCL for Webは
IntraWeb8なのかな?

と疑問に思い調べてみますと
http://www.borland.com/resources/jp/pdf/products/bds/delphi_2007_feature_matrix_ja.pdf
『IntraWeb 9.0アプリケーション配布のための配布マネージャ』
という記述がありますので
IntraWeb9なのですね。

私が希望する程度の機能は、
チャットやBBSを作ることなので、たぶん、どちらのVersionでも
問題にはならないでしょう。

情報助かりました。ありがとうございます。
今後もVersionUpが楽しみです。

デベロッパーキャンプ、がんばってください。
楽しみにしております。

> 送信者 "TAKAHASHI, Tomohiro" <t_tak...@mm.neweb.ne.jp>
> 宛先 Del...@ml.users.gr.jp
> 日時 2007/06/01 14:35:21
> 件名 [Delphi:89690] Re: IntraWebでのSessionを使う値の保存
> ----


-----
Yamamoto Satoshi
sat...@big.or.jp


Reply all
Reply to author
Forward
0 new messages