하지만 그렇게하면 사용자 입력에 따라 연결 문자열이 달라집니다. 사용자 입력을 직접 사용하지 말고 허용되는 값의 목록에 대해 유효성을 검사하십시오. 나는이 작업을 수행 할 수있는 Select Case 문을 제안 :
' Do this when logging in: '
Dim companyName
companyName = Request.Form("companyName")
Select Case companyName
Case "company1"
Session("companyDB") = "company1"
Case "company2"
Session("companyDB") = "company2"
Case Else
Session.Contents.Remove("companyDB")
' Invalid login! '
End Select
' Do this when connecting to the database: '
Dim connectionString
If Session("companyDB") Then
connectionString = "...database=" & Session("companyDB") & "..."
Else
' Invalid login, go log in again '
End If
당신이 하나 개의 탭과 다른 탭에서 다른 회사 한 회사를 열고 자하는 사용자가있는 경우이 문제가 발생할 것이라는 점을 명심하십시오. 그들은 최근에 로그인 한 회사의 정보 만 볼 수있는 이유가 궁금 할 것입니다.
이것이 문제가 될 경우 각 링크의 쿼리 문자열에서 토큰을 전달하고 싶을 것입니다. 이것은 복잡성을 증가 시키지만 (모든 링크를 변경하는 지루한 작업은 제외하고)별로 중요하지 않습니다. 그러면 다음과 같이 표시됩니다.
' Do this when logging in: '
Dim companyName
companyName = Request.Form("companyName")
Select Case companyName
Case "company1"
Session("company1 - db") = "company1DBName"
Case "company2"
Session("company2 - db") = "company2DBName"
Case Else
' Invalid login! '
End Select
' Do this when connecting to the database: '
Dim connectionString, companyToken
companyToken = Request("companyToken")
If Session(companyToken & " - db") Then
connectionString = "...database=" & Session(companyToken & " - db") & "..."
Else
' Invalid login, go log in again
End If
이 설명은 단순화를 위해 토큰이 회사 이름과 같다고 가정합니다. 예를 들어 누군가 "회사 1"에 로그인합니다. 이렇게 성공적으로 수행되면 데이터베이스의 이름 (이 경우 "company1DBName")을 포함하는 "company1 - db"라는 세션 변수가 생성됩니다.
이제 "? companyToken = company1"과 같은 쿼리 문자열이 있어야합니다. 따라서 데이터베이스에 연결하면 해당 토큰을 사용하여 올바른 데이터베이스 이름을 찾습니다. Session (" company1 "+"- db ") ="company1DBName "
아직 해당 회사에 로그인하지 않았거나 (단지 회사 이름을 구성한 경우) 해당 세션 변수가 없으며 로그인 화면으로 가야합니다.
두 회사에서 한 번에 로그인하면 모든 링크에서 데이터베이스 이름을 얻으므로 이제 처리 할 수 있습니다.
의미가 있습니까?
무엇을 하든지 사용자 입력을 사용하여 연결 문자열을 직접 작성하지 마십시오.
Dim connectionString
connectionString = "...database=" & Request.Form("companyDB") & "..."
행운을 빕니다 : 즉, 다음은 잘못된 방법입니다!
[gripe] "로그인"은 동사가 아닌 복수 명사입니다. "사용자가 로그인 할 때 ..."시도하십시오. [/ gripe] – Martha