出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
[3546] Re:sessionについて |
投稿者:暇人さん 2003/08/01 11:06:57 |
> ASPの初心者なもので、暇人さんが書いてくださったアドバイスの中で、ちょっと分からないところがあって、もうちょっと詳しく説明していただけますでしょうか?! > > >Sessionオブジェクトはデフォルト(初期値)でContentsを見るようにできています。その為 Session("test") はセッションオブジェクトの要素testを指してますが。 セッションオブジェクトにはコレクション、プロパティ、メソッドがいろいろついてますね。 だからよく考えてみると Session("test") = "AA" はエラーしてもよさそうですが 勝ってにASP側で、何もないならContentsの事に違いない と解釈してContentsを見に行きます。つまり内部動作で Session("test") を Session.Contents("test") に書き換えています。 Requestオブジェクトも同様に Request("AA") とやると QueryStringを見に行き、無いと次にForm次にCookies次に…と順に見ていきます。 ADOのRecordsetも何もないとFieldsのValueを見に行きます ようするに省略しても動く、という事なのですが。デバッグしづらいし 引き継ぐ人がどえらい大変になります 数百行のASPが数十あるコンテンツがあったとして、その構文のどこを見てもPOSTやGETデータの受け取りに Request("test") 等と書かれていたらどうします?これはFormの事でしょうか?もしかしたらCookiesかも知れませんね。実はServerValiablesの事かもしれません。これを理解するだけで何分掛かかることか。しかも後いくつもあるのです > あと、私の理解でSESSIONオブジェクトを解釈すると、どのページに飛んでも、値を保持し共有できる一つの変数ということでよろしいですか?グローバル変数のような〜 でも、値を共有したいという点を注目すると、ASPページの<FORM>にPOSTとACTIONを入れて、飛ぶ先のページにRequestオブジェクトを使えば、同じく値を共有できるような気がします? 違うんですかね? Session変数は、サーバー内のメモリにSessionが切れるまで居ます HTTPCookiesといテクノロジーを使うため、Cookieが有効に成っていないとユーザーを認識できず。次々と別セッションを立てるため美味く動きません。しかし、ユーザーごとに変数をもつこの仕組みはとても便利です。使いようによっては大きな武器となるでしょう アプリケーション毎に値を持つApplicatioon変数というものもあります POSTやGETで値を飛ばすと。異なるページへ値を渡せますが。そこからさらに次のページへ値を渡すには、再びクライアントにsubmitしてもらう必要があります。一々次へ次へとPOSTさせるのは手間がかかり、綺麗ではないしデバッグも大変ですし、ソースを見ることによってどの値が使いまわされているのか。クライアントに知られてしまう問題が生じます しかし、Sessionは異なるサーバー間では一意にならないし。サーバーのメモリを余計に食うのでコンテンツによっては使用できないという問題もあります |
![]() ![]() |
![]() ![]() ![]() ![]() ![]() |
TreeBBS For ASP V.0.1.3 |