Passwortabfrage funktioniert nicht richtig.

  • Hey Leute,
    was mach ich hier falsch:

    Ich will des wenn der Benutzername falsch ist soll "Login fehlgeschlagen gesendet!" werden.
    Wenn der benutzername richtig ist, aber das Passwort falsch ist, so ebenfalls "Login fehlgeschlagen" gesendet werden.

    wobei "Timo" der Benutzername und "Test" das Pw ist.

    mein Script bis jetzt:

    [autoit]

    if $Eingang[3] <> "Timo" or $Eingang[4] <> "Test" then
    $ConnectedSocket = TCPConnect($Eingang[1], 2000)
    TCPSend($ConnectedSocket,"Login fehlgeschlagen!")
    TCPCloseSocket($ConnectedSocket)

    [/autoit][autoit][/autoit][autoit]

    EndIf

    [/autoit]
  • Hallo TimoIt,

    ich weis nicht welches Problem du hast, denn die Logik ist richtig. Dies kannst du an diesem Beispielskript testen:

    [autoit]

    Dim $Eingang[5]
    $Eingang[3] = "Timo"
    $Eingang[4] = "Test"

    [/autoit][autoit][/autoit][autoit]

    if $Eingang[3] <> "Timo" or $Eingang[4] <> "Test" then
    MsgBox(0,"Fehler:" , "Name oder Passwort falsch!")
    Else
    MsgBox(0,"Glückwunsch" , "du darfst eintreten")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $Eingang[3] = "Timo2" ;falsch
    $Eingang[4] = "Test"

    [/autoit][autoit][/autoit][autoit]

    if $Eingang[3] <> "Timo" or $Eingang[4] <> "Test" then
    MsgBox(0,"Fehler:" , "Name oder Passwort falsch!")
    Else
    MsgBox(0,"Glückwunsch" , "du darfst eintreten")
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $Eingang[3] = "Timo"
    $Eingang[4] = "Test2" ;falsch

    [/autoit][autoit][/autoit][autoit]

    if $Eingang[3] <> "Timo" or $Eingang[4] <> "Test" then
    MsgBox(0,"Fehler:" , "Name oder Passwort falsch!")
    Else
    MsgBox(0,"Glückwunsch" , "du darfst eintreten")
    EndIf

    [/autoit]

    mfg autoBert

  • ja habs hinbekommen,
    wie bekomm ichs jetzt, z.b. hin wenn ich 3 user hab mit jeweil 3 verschiedene passwörter?

    un: Timo
    pw: Test

    un: Peter
    pw: Test2

    un: Manfred
    pw: Test3

  • Hallo TimoIt,

    die einfachste Version ist eine INI-Datei die du dann in ein Array einliest:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $aPWD = IniReadSection(@ScriptDir & "\Benutzer.ini", "BENUTZER")
    _ArrayDisplay($aPWD)

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Form1", 300, 115)
    GUICtrlCreateLabel("Name: ", 10, 20, 135, 25, $SS_RIGHT)
    $idInpName = GUICtrlCreateInput("Name", 150, 20, 120, 25)
    GUICtrlCreateLabel("Passwort: ", 10, 50, 135, 25, $SS_RIGHT)
    $idInpPwd = GUICtrlCreateInput("Passwort", 150, 50, 120, 25)
    $idBtnLogin = GUICtrlCreateButton("einloggen", 185, 85, 75, 25)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $idBtnLogin
    $sName = GUICtrlRead($idInpName)
    $sPwd = GUICtrlRead($idInpPwd)
    $iFound = _ArraySearch($aPWD, $sName)
    $bLogin = False
    ;Login mit False initialisieren

    If $iFound > 0 Then
    ConsoleWrite($iFound & " " & $aPWD[$iFound][0] & " " & $aPWD[$iFound][1] & @TAB)
    ;Daten aus Array in zur Kontrolle in Console schreiben

    [/autoit] [autoit][/autoit] [autoit]

    If $sPwd == $aPWD[$iFound][1] Then $bLogin = True
    ;das Passwort passt zu diesem Benutzer

    EndIf
    ConsoleWrite($bLogin & @CRLF)
    EndSwitch
    WEnd

    [/autoit]

    das ganze sollte aber verschlüsselt in der Datei stehen und im Skript entschlüsselt werden,

    mfg autoBert

  • und damit es sicherheit bietet solltest du das pw und den usernamen gehasht in der ini speichern.
    MD5 ? mit zufälliger erweiterung ? denk dir irgend sowas aus^^

    -