Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Login Protokoll

Begonnen von mad, November 05, 2019, 00:41:44

⏪ vorheriges - nächstes ⏩

DF6GL

Hallo,


was macht dies für einen Sinn?:

ZitatSQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
                            " AND Username = '" & NamenSuchstring & "'"), "")


Sollte eher doch so aussehen:

ZitatstrPasswrt = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")


Und wenn "strPasswrt" (als ausgelesener Passwort-Wert) auch verschlüsselt ist, muss der hier zunächst entschlüsselt werden. In "txtpasswort"   dürfte Klartext drinstehen.

Der Else-Zweig wird allem Anschein nach immer durchlaufen, weil es keine Übereinstimmung zwischen "strPasswrt" und "txtpasswort" gibt.


Und wie gesagt:  Haltepunkt am Codeanfang setzen und Schritt für Schritt die Variableninhalte auf Plausibilität prüfen...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mad

Hallo,

ZitatUnd wie gesagt:  Haltepunkt am Codeanfang setzen und Schritt für Schritt die Variableninhalte auf Plausibilität prüfen...

Wo kann man dazu was nachlesen, wie das funktioniert, wie man vorgeht? Möglichst was Anfängertaugliches.
Ich habe keine Ahnung.

Gruss
mad

DF6GL

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mad

Hallo,

sitze schon wieder Stunden über dem Thema. Habe einiges ausprobiert und wieder verworfen. Habe das mit dem Haltepunkt woweit als möglich angewendet, und dachte das alles soweit unverschlüsselt ist was für das "erfolgreich" bzw. "fehlgeschlagen" notwendig ist.
Aber irgendwie stoße ich deutlich an meine Grenzen.
Ich lasse jetzt einfach den LogInStatus weg.
dann sieht der Codeso aus:
Private Sub txtpasswort_AfterUpdate()
Dim NamenSuchstring As String
Dim PWSuchstring As String
Dim SQLNamenSuchstring As String
Dim SQLPWSuchstring As String
Dim SQLManager As String
Dim SQLKontrolle As String
Dim SQLEinlesen As String
Dim SQLLogbuch As String
Dim Sql_Loeschen As String
'Dim strPasswrt As String
Dim FalschPW As String
Dim FormularZulassung As String
FalschPW = Nz(Me!txtpasswort, "")
On Error Resume Next


NamenSuchstring = Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
PWSuchstring = Nz(EncodeString(Me!txtpasswort, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
SQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
                            " AND Username = '" & NamenSuchstring & "'"), "")
''''von hier
    'DoCmd.SetWarnings False
    CurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, Klarname ) " & _
                            " Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtKlarname] & "')", dbFailOnError
    'DoCmd.SetWarnings True
''''bis hier
  If SQLPWSuchstring = "" Then
       
        SQLKontrolle = "INSERT INTO tabUserPWKontrolle " & "(Falscheingabe, Zeit) " & "VALUES  ('" & FalschPW & "', now)"
        CurrentDb.Execute SQLKontrolle
       
        If DCount("[Falscheingabe]", "tabUserPWKontrolle") > 2 Then
            SQLEinlesen = "SELECT Falscheingabe, Zeit " & "FROM tabUserPWKontrolle"
            SQLLogbuch = "INSERT INTO tabUserPWLogbuch " & "(Falscheingabe, Zeit) " & SQLEinlesen
            CurrentDb.Execute SQLLogbuch
            MsgBox "Sie hatten 3 Versuche. Leider schliesst die DB jetzt."
            Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
            CurrentDb.Execute Sql_Loeschen
            DoCmd.QUIT
           
        End If
       
         Me!PW_Aendern1.SetFocus
         Me!txtUsername = ""
         Me!txtpasswort = ""
         Me!txtUsername.Visible = True
         Me!txtUsername.Visible = True
         Me!txtpasswort.Visible = False
         Dim Zaehler As String
         Zaehler = DCount("[Falscheingabe]", "tabUserPWKontrolle")
         MsgBox "Das Passwort ist unbekannt!" & Chr(13) & Chr(10) & Zaehler & ". Versuch von 3 Versuchen"
         Exit Sub
   Else
         Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
         CurrentDb.Execute Sql_Loeschen
         globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
         
         TempVars.Add "Klarname", globalerBearbeiter
         
         FormularZulassung = Nz(DLookup("FormularZulassung", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
         If Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "") = Nz(DLookup("Username", "tabPWUsergruppe_Allg", "Username ='" & NamenSuchstring & "'"), "") Then
                  globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
               
                  DoCmd.OpenForm FormularZulassung
                  DoCmd.Close acForm, "PasswortAbfrage"
       End If
    End If
   
End Sub


Wenn sich noch jemand an dem Thema versuchen will, gerne. Mein aktueller Stand liegt im Anhang.
User (Name)         PW
user1                   user1
user2                   user2
user3                   user3
sind angelegt.

Ich muß leider passen. Manchmal verliert man halt. :-\
Bedanke mich aber an der Stelle für die super Unterstützung.


Gruss
mad

DF6GL

#19
Hallo,

anbei das angepasste FE.   Die Tabellenverknüpfungen musst Du neu erstellen, bzw. anpassen.

Änderungen im Code sind mit '----------------------------  gekennzeichnet.

Im Admin-Form habe ich das Load-Ereignis mit den Visible-Zuweisungen ergänzt.

Die Zähl-Logik für Einlogversuche im Login-Form habe ich nicht weiter analysiert.

Du versinkst vermutlich in den verwirrenden (nicht aussagekräftigen) Benamsungen und übermäßigen Deklarationen der Variablen.

Das Ganze hat sich halt zu schwer durchschaubaren Spagetticode entwickelt....   :)

Wozu eigentlich die dauernden Ver- und Entschlüsselungen?

M.E. reicht es aus, den User (warum den eigentlich verschlüsseln?) und das PW einmalig zu entschlüsseln und Variablen als Klartext zuzuweisen.

De
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mad

Hallo Zusammen,

ihr habt doch nochmals einen Ergeiz geweckt. Der "Spagetticode" ist zwar naoch etwas länger geworden, aber es funktioniert jetzt so wie ich es möchte.

Hier nochmals der aktuelle Code:
Private Sub txtpasswort_AfterUpdate()
Dim NamenSuchstring As String
Dim PWSuchstring As String
Dim SQLNamenSuchstring As String
Dim SQLPWSuchstring As String
Dim SQLManager As String
Dim SQLKontrolle As String
Dim SQLEinlesen As String
Dim SQLLogbuch As String
Dim Sql_Loeschen As String
Dim FalschPW As String
Dim txtPW As String
Dim FormularZulassung As String
FalschPW = Nz(Me!txtpasswort, "")
On Error Resume Next

NamenSuchstring = Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
PWSuchstring = Nz(EncodeString(Me!txtpasswort, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "")
SQLPWSuchstring = Nz(DLookup("passwort", "tabPWUsergruppe_Allg", "passwort = '" & PWSuchstring & "'" & _
                            " AND Username = '" & NamenSuchstring & "'"), "")
                           
    Me!txtNeuPW = EncodeString(Me!txtpasswort, _
                              "A" & "l" & "l" & "e" & Chr(&H20) & _
                               Chr(Asc("k")) & Chr(Asc("I")) & _
                              Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l")))
                           
If StrComp(SQLPWSuchstring, Me!txtNeuPW, vbBinaryCompare) = 0 Then
        Me!txtLogInStatus = "erfolgreich"
    Else
       Me!txtLogInStatus = "fehlgeschlagen"
    End If
 
       CurrentDb.Execute "INSERT INTO tbl_LogInProtokoll ( LogInDatum, Benutzername, LogInStatus, Klarname ) " & _
                            " Values ( Now() , '" & Me![txtUsername] & "','" & Me![txtLogInStatus] & "','" & Me![txtKlarname] & "')", dbFailOnError

  If SQLPWSuchstring = "" Then
       
        SQLKontrolle = "INSERT INTO tabUserPWKontrolle " & "(Falscheingabe, Zeit) " & "VALUES  ('" & FalschPW & "', now)"
        CurrentDb.Execute SQLKontrolle
       
        If DCount("[Falscheingabe]", "tabUserPWKontrolle") > 2 Then
            SQLEinlesen = "SELECT Falscheingabe, Zeit " & "FROM tabUserPWKontrolle"
            SQLLogbuch = "INSERT INTO tabUserPWLogbuch " & "(Falscheingabe, Zeit) " & SQLEinlesen
            CurrentDb.Execute SQLLogbuch
            MsgBox "Sie hatten 3 Versuche. Leider schliesst die DB jetzt."
            Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
            CurrentDb.Execute Sql_Loeschen
            DoCmd.Quit
           
        End If
       
         Me!PW_Aendern1.SetFocus
         Me!txtUsername = ""
         Me!txtpasswort = ""
         Me!txtUsername.Visible = True
         Me!txtUsername.Visible = True
         Me!txtpasswort.Visible = False
         Dim Zaehler As String
         Zaehler = DCount("[Falscheingabe]", "tabUserPWKontrolle")
         MsgBox "Das Passwort ist unbekannt!" & Chr(13) & Chr(10) & Zaehler & ". Versuch von 3 Versuchen"
         Exit Sub
   Else
         Sql_Loeschen = "DELETE FROM tabUserPWKontrolle "
         CurrentDb.Execute Sql_Loeschen
         globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
         
         TempVars.Add "Klarname", globalerBearbeiter
         
         FormularZulassung = Nz(DLookup("FormularZulassung", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
         If Nz(EncodeString(Me!txtUsername, "A" & "l" & "l" & "e" & Chr(&H20) & Chr(Asc("k")) & Chr(Asc("I")) & Chr(Asc("n")) & Chr(Asc("D")) & Chr(Asc("l"))), "") = Nz(DLookup("Username", "tabPWUsergruppe_Allg", "Username ='" & NamenSuchstring & "'"), "") Then
                  globalerBearbeiter = Nz(DLookup("Klarname", "tabPWUsergruppe_Allg", "Username = '" & NamenSuchstring & "'"), "")
               
                  DoCmd.OpenForm FormularZulassung
                  DoCmd.Close acForm, "PasswortAbfrage"
       End If
    End If
   
End Sub


Danke nochmals an alle.


Gruss
mad