- PR -

Session変数の値が変わる現象

1
投稿者投稿内容
KAN
常連さん
会議室デビュー日: 2003/05/09
投稿数: 27
投稿日時: 2003-07-18 18:09
こんにちわ

Win2000 + ASP.Netを使って開発しています。

'-------------------Public.vbの宣言-----------
Module _Public
Public Structure comArrUser_Struct
Public USER_ID As String
Public USER_NAME As String
End Structure
Public ArrUser() As comArrUser_Struct
End Module
'---------------------------------------------

'-------------------Login Page--------------
Redim Preserve ArrUser(20)
ArrUser(0).USER_ID = txt_User_ID.text.ToString
ArrUser(0).USER_NAME = txt_User_Name.text.ToString
Session("USER") = ArrUser '--- 配列をセッション変数に格納
'---------------------------------------------

'---------------------次のPage----------------
Dim strID as string
Dim strName as string
Dim strSQL as string
ArrUser = Session("USER") '--- セッション変数を配列に返上
strID = ArrUser(0).USER_ID '--- ログインID
strName = ArrUser(0).User_Name '--- ログイン名
strSQL = "SELECT * FROM XXX_TBL WHERE USER_ID='" & strID & "'"
......
......
ユーザー詳細を表示
'---------------------------------------------

で、AさんとBさん二人がいます。
AさんとBさんがほぼ同時にログインすると、
AさんがBさんになったり、BさんがAさんになったりします。
で、AさんとBさんが時間をずらしてログインしますと、
正しく表示されます。

今の段階では、「Public ArrUser() As comArrUser_Struct」が
犯人ではないかと考えていますが、
決定的な理由がなく、自分の知識も乏しい・・・

良ければご教授ください。よろしくお願いします。
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-07-18 18:57
引用:

Public ArrUser() As comArrUser_Struct


確か、モジュールのPublicメンバってグローバル扱いだったような…。
以前この掲示板であったこのスレッドなんか参考にしてみてはいかがでしょうか。


[ メッセージ編集済み 編集者: FOX 編集日時 2003-07-18 19:00 ]
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-07-22 08:12
引用:

KANさんの書き込み (2003-07-18 18:09) より:


'---------------------次のPage----------------
Dim strID as string
Dim strName as string
Dim strSQL as string
ArrUser = Session("USER") '--- セッション変数を配列に返上



そもそも、Module内にPublic変数宣言しているだけでなく、その変数を無条件に上書きしていますから、

引用:

で、AさんとBさんが時間をずらしてログインしますと、
正しく表示されます。



たまたま、正しく見えるだけでしょう。

Module内でなく、各ページに
 Dim ArrUser() As comArrUser_Struct
と宣言していれば、正しく表示されるでしょうけど……
どうしても Module + Structure じゃないとまずいですか?
1

スキルアップ/キャリアアップ(JOB@IT)