Wie auch immer Sie es tun, werden Sie am Ende Ihre Verbindungszeichenfolge basierend auf Benutzereingaben variieren. Verwenden Sie keine Benutzereingaben direkt, sondern validieren Sie sie anhand einer Liste zulässiger Werte. Ich schlage vor, eine Select Case-Anweisung, dies zu tun:
' 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
Beachten Sie, dass dies zu Problemen führen, wenn Sie Benutzer haben, die ein Unternehmen in einem Register und ein anderes Unternehmen in einem anderen Tab öffnen wollen. Sie werden sich fragen, warum sie nur Informationen für das Unternehmen sehen können, bei dem sie sich zuletzt angemeldet haben.
Wenn dies ein Problem wird, möchten Sie wahrscheinlich ein Token in der Abfragezeichenfolge auf jeder Verknüpfung übergeben. Dies erhöht die Komplexität, aber nicht sehr viel (abgesehen von der mühsamen Aufgabe, jeden Link zu ändern). Es würde dann wie folgt aussehen:
' 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
Dies setzt voraus, dass das Token der gleiche wie der Firmenname sein, der Einfachheit halber. So meldet sich beispielsweise jemand für "company1" an. Nach erfolgreichem Abschluss erhalten sie eine Sitzungsvariable namens "company1 - db", die den Namen der Datenbank (in diesem Fall "company1DBName") enthält.
Nun sollte jeder Link, den sie folgen, eine Abfragezeichenfolge haben, wie "? CompanyToken = company1" Wenn Sie also eine Verbindung zur Datenbank herstellen, nehmen Sie dieses Token und verwenden es, um den richtigen Datenbanknamen zu finden: Session (" company1 "+" - db ") =" firma1DBName "
Wenn sie sich noch nicht bei dieser Firma angemeldet haben (oder wenn sie nur einen Firmennamen bilden), haben sie diese Sitzungsvariable nicht, und sie Gehe zum Anmeldebildschirm.
Wenn sie sich unter zwei Firmen gleichzeitig anmelden, können Sie jetzt damit umgehen, weil Sie den Datenbanknamen für jeden Link erhalten.
Sinn machen?
Was auch immer Sie tun, verwenden Sie nicht die Benutzereingabe, um die Verbindungszeichenfolge direkt zu erstellen. Mit anderen Worten, die im Anschluss an die falsche Weg:
Dim connectionString
connectionString = "...database=" & Request.Form("companyDB") & "..."
Viel Glück!
[Beschwerde] "Logins" ist ein Plural Substantiv, kein Verb. Versuchen Sie Folgendes: "Wenn sich der Benutzer anmeldet, ...". [/ Mandel] – Martha