出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

セッション情報の保持   YOUさん [2002/09/02 12:16:59] [2600]
  Re:セッション情報の保持   とこおかさん [2002/09/02 13:48:46] [2601]
    セッションが切れた時にメッセージを出したい   YOUさん [2002/09/02 16:58:38] [2602]
      Re:セッションが切れた時にメッセージを出したい   とこおかさん [2002/09/02 20:34:34] [2603]
        セッションに書き込まれたものが消滅したのか?元々書かれていなかったのかの違いは?   YOUさん [2002/09/03 14:16:24] [2606]
          Re:セッションに書き込まれたものが消滅したのか?元々書かれていなかったのかの違いは?   とこおかさん [2002/09/03 14:59:43] [2607]

[2600] セッション情報の保持
投稿者:YOUさん 2002/09/02 12:16:59
■やりたいこと
@あるページで条件を指定します(チェックボックスにチェックを入れる)
Aその状態をセッションに書き込みます
B別のページで、Aで保存した内容を取り出し、データ抽出の条件とします。

■問題点
AとBの間に時間が空いてしまったらセッションの内容が消えてしまいますよね?
ユーザーはAの段階で保存したつもりになっているのに、途中席を外し、
Bのオペレーションをしたら、指定した筈の条件が取得できていなかった、
という事態が予測されます。

■対処方法(思いつく限り考えてみました)
・Global.aspのSession_OnEndを使う
  →他にもいくつかセッションを使っている処理がある為、
   そちらにも影響してしまいますよね?
・Formでデータを送信
  →取得するページではボタンを押下したタイミングで、
   条件を指定したページのFormの情報を取得したいのですが、
   そのページでもボタン押下でFormの送信を行っている為、
   どうも前のページの送信内容が消えてしまっている(取得できない)
ようです(そういうものなのですか?)
・TimeOutの時間を延長する
  →そうするとこの処理だけではなく、全てに影響しますよね?
   また、延ばすにしても、どのくらいまでが一般的な許容範囲なのですか?

以上のようなことを考えたのですが、なかなか上手くいきません。
何か良い方法がありますか?


[2601] Re:セッション情報の保持
投稿者:とこおかさん 2002/09/02 13:48:46
とこおかです。
何パターンか方法はあります。

1、フォーム内に<input type="hidden">を書いてフォーム受け渡しを行う。
(ソースに条件指定のキーワードが出てしまいますが・・・)

2、cookieを利用する。ただし、セキュリティに問題あり。

3、sessionが切れた時点で再度条件指定を促すメッセージを出す。
必要ならページを変える

>また、延ばすにしても、どのくらいまでが一般的な許容範囲なのですか?
一般的な時間(分)は無いと思います。
サーバの負荷にもよりますが、あまりにも長時間保持することは望ましくないのではと思います(私見)。
Session.Contents.Remove("セッション名")でこまめにセッションオブジェクトに対するデータを削除するのもひとつの方法ですね。
(IISのバージョンによって使えない場合があったような気もしますが・・・)


[2602] セッションが切れた時にメッセージを出したい
投稿者:YOUさん 2002/09/02 16:58:38
早速、お返事頂きありがとうございます。
さて、アドバイスいただいた以下の件ですが、どういったやり方で実現できるのでしょうか?
キーワードだけでも教えていただけませんか?

> 3、sessionが切れた時点で再度条件指定を促すメッセージを出す。
> 必要ならページを変える

以下の条件でやりたいのですが・・・・
@セッションは他の複数の処理で使用しており、そちらへは影響を与えたく有りません。
Aセッションに書き込まれた内容を取得するのは別のページで、ボタンを押下された際に走る処理で取得しています。
 その為、ボタンを押下された際に、セッションが切れたかどうかの感知をし、
 切れていたらその旨を警告するメッセージを画面に表示して、以降の処理を走らせないようにしたいのです。
 


よろしくお願いいたします。

[2603] Re:セッションが切れた時にメッセージを出したい
投稿者:とこおかさん 2002/09/02 20:34:34
とこおかです。

ボタン押下時にsessionオブジェクトにデータが保持されているかどうかを確認するなら

If Session.Contents("オブジェクト名") ="" Then
'または If Session="" Then
Response.Write"Sessionオブジェクトデータがクリアされています"
Response.Write"<a href='任意のページ'>任意のページ</a>"
Else
通常の処理
End If

でページを表示する前に確認することができます。
そうすれば、常にsession管理をせず、ボタン押下時のみ確認で済みますね。


[2606] セッションに書き込まれたものが消滅したのか?元々書かれていなかったのかの違いは?
投稿者:YOUさん 2002/09/03 14:16:24
お返事ありがとうございます。
条件をもう少し追加しても良いですか?
まず、sessionへの書き込みは、毎回行われるのではないということです。
書き込む、書き込まないは利用者の都合で行われ、書き込まれた場合のみ、
sessionより値を取得して使用します。

教えていただいた処理だと、一度書き込まれたものが消滅したのか、それとも、
元から書き込まれていなかったのか、の区別がつきませんよね?

というわけで、セッションが消滅したという情報が欲しいのですが、
どこかにそういった情報があるのでしょうか?


> とこおかです。
>
> ボタン押下時にsessionオブジェクトにデータが保持されているかどうかを確認するなら
>
> If Session.Contents("オブジェクト名") ="" Then
> 'または If Session="" Then
> Response.Write"Sessionオブジェクトデータがクリアされています"
> Response.Write"<a href='任意のページ'>任意のページ</a>"
> Else
> 通常の処理
> End If
>
> でページを表示する前に確認することができます。
> そうすれば、常にsession管理をせず、ボタン押下時のみ確認で済みますね。
>
>

[2607] Re:セッションに書き込まれたものが消滅したのか?元々書かれていなかったのかの違いは?
投稿者:とこおかさん 2002/09/03 14:59:43
とこおかです。

>■やりたいこと
>@あるページで条件を指定します(チェックボックスにチェックを入れる)
>Aその状態をセッションに書き込みます
>B別のページで、Aで保存した内容を取り出し、データ抽出の

条件つけすぎ!!最初とかなり変わってません?
発想でいくらでも回避できます。

[例]
架空のsessionオブジェクトに架空の値を常に代入し、そのsessionを判断条件にする等

#ボタン押下時の状態取得ですよね?

専任アドバイザーではないので、これ以上条件つけられても私はパス。

#なぜsessionにこだわる??
#作成されているページではあまり向いていないのでは?



TreeBBS For ASP V.0.1.3
Program By YasNet