Cependant, vous finirez par faire varier votre chaîne de connexion en fonction de l'entrée de l'utilisateur. N'utilisez pas directement l'entrée de l'utilisateur, mais validez-la par rapport à une liste de valeurs acceptables. Je suggère une instruction Select Case à faire:
' 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
Gardez à l'esprit que cela va conduire à des problèmes si vous avez des utilisateurs qui veulent ouvrir une entreprise dans un onglet et une autre société dans un autre onglet. Ils vont se demander pourquoi ils ne peuvent voir que des informations sur l'entreprise dans laquelle ils se sont connectés récemment.
Si cela pose un problème, vous souhaiterez probablement passer un jeton dans la chaîne de requête sur chaque lien. Cela ajoute de la complexité, mais pas beaucoup (à part la tâche fastidieuse de changer chaque lien). Il serait alors ressembler à ceci:
' 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
Cela suppose que le jeton sera le même que le nom de la société, pour plus de simplicité. Ainsi, par exemple, quelqu'un se connectera à "company1". Ayant réussi, ils obtiennent une variable de session appelée "company1 - db", qui contient le nom de la base de données (dans ce cas, "company1DBName"). Maintenant, chaque lien doit avoir une chaîne de requête, comme "? CompanyToken = company1" Donc, lorsque vous vous connectez à la base de données, vous prenez ce jeton et vous l'utilisez pour trouver le bon nom de base de données: Session (" company1 "+" - db ") =" company1DBName "
S'ils ne se sont pas encore connectés à cette société (ou s'ils ne font que composer un nom de société), ils n'auront pas cette variable de session, et ils devez aller à l'écran de connexion.
S'ils se connectent sous deux sociétés à la fois, vous pouvez maintenant le gérer car vous obtiendrez le nom de la base de données sur chaque lien.
Avez-vous du sens?Quoi que vous fassiez, n'utilisez pas l'entrée utilisateur pour créer directement la chaîne de connexion. En d'autres termes, ce qui suit est la mauvaise façon :
Dim connectionString
connectionString = "...database=" & Request.Form("companyDB") & "..."
Bonne chance!
[gripe] "logins" est un nom pluriel, pas un verbe. Essayez "Lorsque l'utilisateur se connecte, ...". [/ Gripe] – Martha