• Hi,

    wollte noch kurz meine Func posten die ich noch fertig kriegen wollte :D
    Ist fürn Login am Anfang des Skriptes da.
    Ich denke die Beschreibung der Funktion und das Beispiel sagt alles :D
    In Eile geschrieben also nehmt Rücksicht auf Fehler aber meldet sie :P
    Werdet die Func auch bald in meiner Libary finden.

    Spoiler anzeigen
    [autoit]


    #include <guiconstants.au3>
    #include <array.au3>

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

    Global $names = _ArrayCreate("Herbert","Gustav","Inge","Josef")
    Global $pws = _ArrayCreate("a","b","c","d")

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

    $test = _Login("Login - Test",$names,$pws)
    Switch @error
    Case 0
    msgbox(0,"","Willkommen " & $test & ", wie gehts dir?")
    Case 1
    msgbox(0,"","dann nicht!")
    Exit
    Case 2
    msgbox(0,"","Sorry! Falsches Passwort oder falscher Nutzername!")
    Exit
    Case 3
    msgbox(0,"","inkorrektes array!")
    Exit
    EndSwitch

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

    msgbox(0,"Hauptprogramm","Das hier ist das Hauptprogramm :D")

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

    ;===============================================================================
    ;
    ; Description: Login for the beginnging of a program to check users authority
    ; Syntax: _Login($sTitle,$sUsername,$sPassword,$BgColor = 0x000000,$TxtColor = 0xFFFFFF,$BtnColor = 0x000000)
    ; Parameter(s): $sTitle = Title of the box
    ; $sUsername = one username for login, or for more users an 1 dimensional array with usernames,
    ; first username belongs to first $sPassword, second username belongs to second $sPassword,
    ; third username belongs to third $sPassword, ... no limit set
    ; $sPassword = one password for login, or for more users an 1 dimensional array with passwords,
    ; first password belongs to first $sUsername, second password belongs to second $sUsername, ...
    ; $BgColor = Background color of the GUI, default = black
    ; $TxtColor = Text color of the GUI, default = white
    ; $BtnColor = Button color of the GUI, default = black
    ; Requirement(s): #include <guiconstants.au3>
    ; Return Value(s): On Success - Returns $sUsername wich the user logged in
    ; On Failure - Returns 0 and sets @error
    ; 1 = User exited the Login Window
    ; 2 = Username or password wrong
    ; 3 = incorrect array given
    ; Author(s): qon
    ; Note(s): You don't have to create an array for usernames/passwords if you only need one username / passsword.
    ;
    ;===============================================================================

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

    Func _Login($sTitle,$sUsername,$sPassword,$BgColor = 0x000000,$TxtColor = 0xFFFFFF,$BtnColor = 0x000000)
    $LoginGui = GuiCreate("Login",250,100)
    $NameLabel = GuiCtrlCreateLabel("username",12,11)
    $Name = GuiCtrlCreateInput("",70,10,165)
    $PwLabel = GuiCtrlCreateLabel("password",12,40)
    $Pw = GuiCtrlCreateInput("",70,38,165,-1,$ES_PASSWORD)
    $Login = GuiCtrlCreateButton("Login",75,67,100)

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

    GuiSetBkColor($BgColor,$LoginGui)
    GuiCtrlSetColor($NameLabel,$TxtColor)
    GuiCtrlSetColor($PwLabel,$TxtColor)
    GuiCtrlSetBkColor($Login,$BtnColor)
    GuiCtrlSetColor($Login,$TxtColor)
    GuiSetState()

    While 1
    Switch GuiGetMsg()
    Case $GUI_EVENT_CLOSE
    GuiDelete($LoginGui)
    SetError(1)
    Return 0
    Case $Login
    If Not IsArray($sUsername) and Not IsArray($sPassword) Then
    If GuiCtrlRead($Name) = $sUsername and GuiCtrlRead($Pw) = $sPassword Then
    GuiDelete($LoginGui)
    Return $sUsername
    Else
    GuiDelete($LoginGui)
    SetError(2)
    Return 0
    EndIf
    ElseIf IsArray($sUsername) and IsArray($sPassword) Then
    If (UBound($sUsername,0) <> 1) or (UBound($sPassword,0) <> 1) or (UBound($sUserName,1) <> UBound($sPassword,1)) Then
    GuiDelete($LoginGui)
    SetError(3)
    Return 0
    EndIf
    $UN = GuiCtrlRead($Name)
    $UP = GuiCtrlRead($Pw)
    For $i = 0 to UBound($sUsername)-1
    If $UN = $sUsername[$i] and $UP = $sPassword[$i] Then
    GuiDelete($LoginGui)
    Return $sUserName[$i]
    EndIf
    Next
    GuiDelete($LoginGui)
    SetError(2)
    Return 0
    Else
    GuiDelete($LoginGui)
    SetError(3)
    Return 0
    EndIf
    EndSwitch
    WEnd
    EndFunc

    [/autoit]

    edit: ich hab irgendwo nen blöden fehler, werd mich morgen drum kümmern.
    edit2: War ein falscher Funktionsaufruf von mir - wie peinlich :D
    Und noch etwas: der Gui wurde nicht deleted, wenn die Angaben stimmten, auch gefixt.

    Greetz

    4 Mal editiert, zuletzt von qon (13. Februar 2008 um 13:36)

  • Hallo.

    Das Script schaut gut aus.

    Ich habe aber das Problem, das immer die Meldung kommt; "inkorrektes array!". Wo liegt der Fehler?

    LG, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi gon und Alina,

    ich hab kurz den Fehler gefunden :D .

    Ändert mal die Zeile 7 in '$test = _Login("Title",$names,$pws)' und schon klappt's mit der Anmeldung.

    @gon
    Wenn du noch eine verschlüseltes Datei dahinterhängt ist das echt 'ne coole Sache!

    Edit - McPoldy: Jupp, aber du hast das für gon nochmal erklärt :thumbup:

    2 Mal editiert, zuletzt von JanSchmidt (13. Februar 2008 um 12:27)

  • Hi,

    der Fehler ist ganz einfach :)

    $test = _Login("Title","Text",$names,$pws) <= Zeile 7

    Func _Login($sTitle,$sUsername,$sPassword,$BgColor = 0x000000,$TxtColor = 0xFFFFFF,$BtnColor = 0x000000) <= Zeile 48

    Bei der Funktion werden Titel, Benutzernamen-Array und Passwort-Arry als Minimum gefordert, beim aufruf über gibt er im Beispiel aber Tilel,Text,Benutzernamen-Array und Passwort-Arry also einen zuviel.

    Pass Zeile 7 so an:
    $test = _Login("Title",$names,$pws)

    Dann klappt es :)

    Edit: :S da war JanSchmidt schneller......

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Soo... :D
    Also danke erstmal für eure Beiträge!
    Jap ich hab den Funktionsaufruf falsch, die Funktion an sich stimme :D
    Ich hatte vorerst vor, noch einen Text reinzubringen, mich aber dann umentschieden, daher wars noch falsch :(
    Also wie gesagt, entweder beides ein Array oder nur ein Username und Pw :)
    Habs mal abgeändert *g*
    Und noch was, was mir bei ner langweiligen Schulstunde eingefallen war: der Gui wurde nicht deleted, wenn die Angaben stimmten, auch gefixt.
    @JanSchmidt:
    Wie meinst du das mit verschlüsselte datei?
    Bin für Ideen offen! 8)

    greetz

    Einmal editiert, zuletzt von qon (13. Februar 2008 um 13:04)

  • Ja, nun klappt es auch mit dem Nachbarn. :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • @gon
    Na eine Datei mit den Benutzern und Passwörtern, die für die Anmeldung benutzt werden.
    So kann später der Admin in dem Programm noch Benutzer hinzufügen usw. usw. ... :D :thumbup:

  • Qon! ;)
    Also das wäre natürlich ideal, aber ich kenne nur diese Methode um es umzusetzen:
    Eine beiliegende Ini oder Textdatei, in der die Namen und Passwörter verschlüsselt bei dem Skript immer dabei liegen müssten.
    So müsste man das Skript nicht neu Kompilen, allerdings ist das finde ich auch der einzige Vorteil ;) Und da sowieso nur die "Admins" die Usernames/Pw's verändern bzw neue hinzufügen könnten, hätte das denke kein Sinn. Da geht es denke ich schneller, einfach im Array einen Nutzer hinzuzufügen,
    als erst die Ini zu entschlüsseln, die Änderungen vornehmen und wieder neu verschlüsseln.
    Naja :D
    Greetz

  • Ja so ne Passwortdatei wäre schon was schönes, aber bitte mit verschlüsselten Passwort :) kannste ja mit MD5 machen.

    Edit: Habe grade den letzten Komentar gelesen, stimmt schon die Admins machen das erstellen des Scritps, aber wenn du das Login in verschiedenen Scripten einbaust, die von verschiedenen Gruppen genutzt werden, macht es doch wieder Sinn eine verschlüsselte Datei zu nehmen.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

    Einmal editiert, zuletzt von McPoldy (13. Februar 2008 um 13:51)

  • Sorry Qon ;)
    aber so eine Datei hat schon Vorteile, besonders wenn du eine Func für eine Library machst.
    Ich kann mir da so Sachen wie _Login_AddUser(), _Login_DelUser() und _Login_ChangePassword() vorstellen ;) .
    Guck dir mal an was McPoldy gepostet hat.
    Aber nicht falsch verstehen, der Ansatz ist sehr cool und ich würde gerne sehen wie er fertig aussieht :thumbup:

  • Hm okay zur Kenntnis genommen :D
    Sollte ich vielleicht einen Gui konstruieren,
    um eine .ini zu erstellen/verändern/verwalten?
    Denn so Funcs wie du sagtest JanSchmidt würden ja nur Sinn in einen "kompilten" Gui machen,
    den alle "Admins" *g* kriegen.
    Hab sowas schonmal gebaut, also ne Verwaltung von verschlüsselten Dateien.
    Ich hab schon so paar Ideen, melde mich später wieder ;)
    Ach und hier meine Libary die ich meinte^^
    Meine Libary von mir die ich erweitern werde mit meinen UDF's

    greetz

  • @progandy
    Sieht auch ganz gut aus, aber is noch nicht 'wiederverwendbar'.
    Wär doch cool wenn es bald eine Login-UDF gäbe und man sich nicht mehr darum kümmern müsste :P .
    Vielleicht kannst du dich ja mit qon kurzschließen?