|
You last visited: Today at 19:18
Advertisement
Register/Login Script [AutoIt]
Discussion on Register/Login Script [AutoIt] within the AutoIt forum part of the Coders Den category.
05/11/2013, 12:26
|
#1
|
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
|
Register/Login Script [AutoIt]
Hallöchen, ich zeige euch meinen selbst geschriebenen AutoIt Register/Login Script vor.
Erklärung:
Wenn man sich registriert speichert er in den Ordner Spieler 2 Textdateien, ein mal Username und Passwort. Natürlich verschlüsselt es auch den Passwort damit es sicherer ist. Wenn man sich einloggt, fragt es ab ob eine Datei existiert mit den Username, und wenn ja fragt es ab ob alles genau gleich ist.
Wenn ihr den Script nicht downloaded sondern einfach kopiert, müsst ihr einen Ordner namens Spieler erstellen.
Script:
Code:
#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Created by sezer0012", 247, 74, 379, 310)
GUISetBkColor(0x99B4D1)
$Button1 = GUICtrlCreateButton("Login", 128, 32, 99, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Registrieren", 8, 32, 107, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("NEU HIER?", 8, 8, 112, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
$Label2 = GUICtrlCreateLabel("ODER", 136, 8, 59, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Form2()
Case $Button2
Form3()
EndSwitch
WEnd
Func Form2()
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Login", 216, 94, 337, 251)
GUISetBkColor(0x99B4D1)
$Label1 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
$Label2 = GUICtrlCreateLabel("Geheimcode:", 8, 32, 67, 17)
$Input1 = GUICtrlCreateInput("", 80, 8, 121, 21)
$Input2 = GUICtrlCreateInput("", 80, 32, 121, 21)
$Button1 = GUICtrlCreateButton("Login", 8, 56, 195, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Local $datei1, $datei2, $zeile1, $zeile2
Local $username3 = GUICtrlRead($Input1)
Local $gehcode4 = GUICtrlRead($Input2)
Local $zeile1 = FileRead("S" & $username3)
Local $zeile2 = FileRead("P" & $gehcode4)
$datei1 = FileOpen(@ScriptDir & "\Spieler\Spieler " & $username3 & "\" & "S" & $username3)
$datei2 = FileOpen(@ScriptDir & "\Spieler\Spieler " & $username3 & "\" & "P" & $gehcode4)
If Not FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Username" & ".txt") Then
MsgBox(16, "Fehler!", "Account existiert nicht.")
Exit
EndIf
If Not FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Passwort" & ".txt") Then
MsgBox(16, "Fehler!", "Passwort falsch angegeben!")
Exit
EndIf
If FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Username" & ".txt") And FileExists(@ScriptDir & "\Spieler\" & $username3 & "\Passwort" & ".txt") Then
Form4()
Else
MsgBox(16, "Fehler!", "Es ist ein Unbekannter Fehler aufgetreten!")
EndIf
EndSwitch
WEnd
EndFunc
Func Form3()
#Region ### START Koda GUI section ### Form=
$Form3 = GUICreate("Registrieren", 397, 54, 302, 218)
GUISetBkColor(0x99B4D1)
$Label1 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
$Input1 = GUICtrlCreateInput("", 64, 8, 121, 21)
$Label2 = GUICtrlCreateLabel("Passwort:", 192, 8, 67, 17)
$Input2 = GUICtrlCreateInput("", 264, 8, 121, 21)
$Button1 = GUICtrlCreateButton("Registrieren", 64, 32, 323, 17, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Local $Spieler = "\Spieler\"
$username1 = GUICtrlRead($Input1)
$gehcode2 = GUICtrlRead($Input2)
$lvl = 1
If FileExists(@ScriptDir & $Spieler & $username1 & "\" & "S" & $username1 & ".txt") Then
MsgBox(16, "Fehler!", "Account existiert schon!" & @CRLF & @CRLF & "Wenn sie ihr Passwort vergessen haben," & @CRLF & "müssen sie sich einen neuen Account" & @CRLF & "mit anderen Daten zulegen.")
Exit
EndIf
DirCreate(@ScriptDir & "\Spieler\" & $username1)
FileWrite(@ScriptDir & "\Spieler\" & $username1 & "\" & "Username" & ".txt", $username1 & @CRLF)
FileWrite(@ScriptDir & "\Spieler\" & $username1 & "\" & "Passwort" & ".txt", _StringEncrypt(1, $gehcode2, $gehcode2, $lvl))
MsgBox(0, "Erfolgreich!", "Sie haben sich erfolgreich Registriert," & @CRLF & "loggen sie sich bitte jetzt ein.")
Exit
$LOG = FileOpen(@ScriptDir & "\Spieler\" & "Spieler " & $username1 & ".txt", 1 )
If $LOG = -1 Then
MsgBox( 0, "Mist", "Datei konnte nicht geöffnet werden" )
Exit
EndIf
EndSwitch
WEnd
EndFunc
Func Form4()
#Region ### START Koda GUI section ### Form=
$Form4 = GUICreate("Das wars!", 391, 238, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 385, 233)
GUICtrlSetData(-1, "Edit1")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetData($Edit1, "Das war das Login - Script.")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
EndFunc
VirusTotal: Download - Link:
Natürlich müsst ihr noch was ändern, also wenn man sich eingeloggt hat soll ja was passieren, das müsst ihr ändern wie ihr es wollt!
Das ist mein erstes richtiges AutoIt Script 
wenn es bugs gibt bitte melden
|
|
|
05/11/2013, 14:19
|
#2
|
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
|
Hallo sezer :)
Die Idee von deinem Script ist gut, aber du setzt sie leider nicht richtig um.
Ist nichts schlimmes, man lernt ja aus Fehlern.
Hab mir deinen Script mal angeschaut und abgeändert und nun will ich dir zeigen was man besser machen kann:
PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Created by sezer0012", 247, 74, -1, -1)
GUISetBkColor(0x99B4D1)
$Button1 = GUICtrlCreateButton("Login", 128, 32, 99, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Registrieren", 8, 32, 107, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("NEU HIER?", 8, 8, 112, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
$Label2 = GUICtrlCreateLabel("ODER", 136, 8, 59, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Login", 216, 94, -1, -1)
GUISetBkColor(0x99B4D1)
$Label3 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
$Label4 = GUICtrlCreateLabel("Geheimcode:", 8, 32, 67, 17)
$Input1 = GUICtrlCreateInput("", 80, 8, 121, 21)
$Input2 = GUICtrlCreateInput("", 80, 32, 121, 21)
$Button3 = GUICtrlCreateButton("Login", 8, 56, 195, 25, $WS_GROUP)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form=
$Form3 = GUICreate("Registrieren", 397, 54, -1, -1)
GUISetBkColor(0x99B4D1)
$Label5 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
$Input3 = GUICtrlCreateInput("", 64, 8, 121, 21)
$Label6 = GUICtrlCreateLabel("Passwort:", 192, 8, 67, 17)
$Input4 = GUICtrlCreateInput("", 264, 8, 121, 21)
$Button4 = GUICtrlCreateButton("Registrieren", 64, 32, 323, 17, $WS_GROUP)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form=
$Form4 = GUICreate("Das wars!", 391, 238, -1, -1)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 385, 233)
GUICtrlSetData(-1, "Edit1")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $Form1
Exit
Case $Form2
GUISetState(@SW_HIDE, $Form2)
Case $Form3
GUISetState(@SW_HIDE, $Form3)
Case $Form4
GUISetState(@SW_HIDE, $Form4)
EndSwitch
Case $Button1 ;LoginForm
GUISetState(@SW_SHOW, $Form2)
Case $Button2 ;RegisterForm
GUISetState(@SW_SHOW, $Form3)
Case $Button3 ;Login
$Username = GUICtrlRead($Input1)
$Passwort = GUICtrlRead($Input2)
$RegUsers = IniReadSectionNames(@ScriptDir & "/Spieler.ini")
If _ArraySearch($RegUsers, $Username) <> -1 Then
$sPasswort = _StringEncrypt(0, IniRead(@ScriptDir & "/Spieler.ini", $Username, "password", ""), "1337")
If $sPasswort = $Passwort Then
GUISetState(@SW_SHOW, $Form4)
Else
MsgBox(16, "", "Falsches Passwort")
EndIf
Else
MsgBox(16, "", "Benutzer existiert nicht")
EndIf
Case $Button4 ;Register
$Username = GUICtrlRead($Input3)
$Passwort = GUICtrlRead($Input4)
$RegUsers = IniReadSectionNames(@ScriptDir & "/Spieler.ini")
If _ArraySearch($RegUsers, $Username) = -1 Then
IniWrite(@ScriptDir & "/Spieler.ini", $Username, "password", _StringEncrypt(1, $Passwort, "1337"))
MsgBox(64, "", "Erfolgreich registriert")
Else
MsgBox(16, "", "Benutzer existiert bereits")
EndIf
EndSwitch
WEnd
Wenn du in einem Script mehrere GUIs benutzt, dann setz sie an den Anfang alle untereinander und benutze keine verschiedenen Funktionen dafür.
Der Grund dafür ist ganz einfach: wenn ich zwei Funktionen habe mit jeweils einer GUI und über die GUI in der Funktion1 die Funktion2 aufrufe, dann springe ich automatisch in die While-Schleife der zweiten GUI und kann somit keine Elemente mehr aus der ersten GUI benutzen.
Außerdem schließt sich der gesamte Script, wenn ich das Fenster schließen will.
Lösung: Eine erweiterte GUIGetMsg-Abfrage.
GUIGetMsg(1) gibt eine Array zurück, die unter anderem die Ereignis-ID ($nMsg[0]) und das Fenster-Handle der GUI beinhaltet, in welcher das Ereignis gemeldet wird ($nMsg[1]).
Beim Registrieren ist mir aufgefallen, dass ich mich mehrmals registrieren kann. Wenn der Benutzername schon existiert komm keine Fehlermeldung, sondern das alte Passwort wird einfach mit dem neuen Überschrieben und in der Username.txt stehen dann zwei Zeilen mit dem gleichen Namen.
Lösung: Alle Benutzer in eine Ini-Datei stecken.
Eine Ini-Datei bietet hier viele Vorteile. Einmal ist die Abfrage der Daten leichter und man kann ohne viele Dateien mehr Daten speichern (z.B. ob ein Benutzer gesperrt ist, oder schon eingeloggt).
Hier mal ein Beispiel:
PHP Code:
[Benutzer1]
password=E2B91FAE039A9112B9549524
[Benutzer2]
password=9BBD1ED5
Der Befehl IniReadSectionNames würde nun eine Array zurückgeben ($aBenutzer[3] = [2, "Benutzer1", "Benutzer2"]) und du musst mit _ArraySearch oder einer For-Schleife nurnoch überprüfen, ob der eingegebene Benutzername in der Array vorhanden ist.
Falls ja, wird das Passwort aus der Section des Benutzers ausgelesen und mit dem eingegebenen Passwort verglichen.
Falls du noch Fragen hast oder Hilfe benötigst, dann melde dich einfach bei mir!
|
|
|
05/11/2013, 14:42
|
#3
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|
Nunja, an sich eine ganz nette Idee, jedoch gibt es eine Menge zu bemengeln.
Die Verschlüsselung ist einfach nur **** und bietet null Sicherheit.
Das Speichern des Benutzernamen und Passwortes in einzelne .txt Dateien macht die Sache ziemlich umständlich und ist auch nicht die eleganteste Möglichkeit. Versuch doch mal das Passwort und den Benutzernamen in die registry mit einem eigenen Verschlüsslungsalgoritmus abzuspeichern. Das macht es um einiges einfacher und Daten aus der registry zu lesen ist schneller als die Textdokumente zu öffnen, lesen und anschließend wieder schließen. Desweitern bleiben die geöffneten Formen (Login, Register) immer im Hintergrund sichtbar, was sich sehr einfach beheben lässt.
Hoffe ich konnte dir soweit helfen, dass du es umsetzen kannst.
PS: Gib deinen Variablen ordentliche Namen - Stichwort: Ungarische Notation
|
|
|
05/11/2013, 15:09
|
#4
|
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
|
Code:
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Created by sezer0012", 247, 74, -1, -1)
GUISetBkColor(0x99B4D1)
$Button1 = GUICtrlCreateButton("Login", 128, 32, 99, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Registrieren", 8, 32, 107, 25, $WS_GROUP)
$Label1 = GUICtrlCreateLabel("NEU HIER?", 8, 8, 112, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
$Label2 = GUICtrlCreateLabel("ODER", 136, 8, 59, 19)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Login", 216, 94, -1, -1)
GUISetBkColor(0x99B4D1)
$Label3 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
$Label4 = GUICtrlCreateLabel("Geheimcode:", 8, 32, 67, 17)
$Input1 = GUICtrlCreateInput("", 80, 8, 121, 21)
$Input2 = GUICtrlCreateInput("", 80, 32, 121, 21)
$Button3 = GUICtrlCreateButton("Login", 8, 56, 195, 25, $WS_GROUP)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form=
$Form3 = GUICreate("Registrieren", 397, 54, -1, -1)
GUISetBkColor(0x99B4D1)
$Label5 = GUICtrlCreateLabel("Username:", 8, 8, 55, 17)
$Input3 = GUICtrlCreateInput("", 64, 8, 121, 21)
$Label6 = GUICtrlCreateLabel("Passwort:", 192, 8, 67, 17)
$Input4 = GUICtrlCreateInput("", 264, 8, 121, 21)
$Button4 = GUICtrlCreateButton("Registrieren", 64, 32, 323, 17, $WS_GROUP)
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
#Region ### START Koda GUI section ### Form=
$Form4 = GUICreate("Das wars!", 391, 238, -1, -1)
$Edit1 = GUICtrlCreateEdit("", 0, 0, 385, 233)
GUICtrlSetData(-1, "Edit1")
GUISetState(@SW_HIDE)
#EndRegion ### END Koda GUI section ###
Wenn ich das jetzt einfügen würde, würden dann nicht alle 4 Fenster gleichzeitig geöffnet?
|
|
|
05/11/2013, 15:13
|
#5
|
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
|
Quote:
Originally Posted by sezer0012
Wenn ich das jetzt einfügen würde, würden dann nicht alle 4 Fenster gleichzeitig geöffnet?
|
Geöffnet ja, aber du siehst sie nicht.
|
|
|
05/11/2013, 15:17
|
#6
|
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
|
Quote:
Originally Posted by #System
Geöffnet ja, aber du siehst sie nicht.
|
Danke das hab ich jetzt gecheckt,
aber könntest du mir vielleicht noch das mit
nMsg erklären.
|
|
|
05/11/2013, 15:28
|
#7
|
elite*gold: 1445
Join Date: Sep 2011
Posts: 199
Received Thanks: 177
|
Wenn du eine While Schleife mit der GUIGetMsg Abfrage hast, also:
PHP Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Und jetzt etwas in deiner GUI machst, z.b. das rote X zum Schließen drückst, dann gibt GUIGetMsg die Ereignis-ID zurück.
Und je nach dem wie diese lautet schreibst du in die Cases für den Rückgabewert von GUIGetMsg Funktionen.
Wenn die Ereignis-ID $GUI_EVENT_CLOSE ist, dann wird das Programm geschlossen.
Benutzt du aber GUIGetMsg(1), also den Advanced Mode, dann erhälst du mehr als nur die Ereignis-ID.
Quote:
|
Originally Posted by AutoIt Hilfe
Wird der "advanced"-Parameter verwendet, werden die Informationen in einem Array zurückgegeben:
$array[0] = 0 oder Ereignis-ID oder Control-ID
$array[1] = Der Fenster-Handle des Fensters, von dem das Ereignis gemeldet wird
$array[2] = Der Control-Handle des Controls, von dem das Ereignis gemeldet wird (gegebenenfalls)
$array[3] = Die aktuelle X-Position des Mauszeigers (relativ zum GUI-Fenster)
$array[4] = Die aktuelle Y-Position des Mauszeigers (relativ zum GUI-Fenster)
Wenn die GUIOnEventMode-Option auf 1 gesetzt ist, ist der Rückgabewert von GUIGetMsg immer 0, und @error wurde auf 1 gesetzt.
|
Heißt, wenn wir mehrere GUIs haben können wir im Advanced Mode abfragen, aus welcher der GUIs das Event gesendet wird:
PHP Code:
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
Case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $Form1
Exit
Case $Form2
GUISetState(@SW_HIDE, $Form2)
EndSwitch
EndSwitch
WEnd
Wenn wir das rote X drücken (egal in welcher GUI), fragen wir in einer zweiten Switch-Anweisung ab, in welcher GUI das X gedrückt wurde.
Wenn es in $Form1 war wird der Script beendet, und wenn es in $Form2 war wird nur $Form2 unsichtbar gemacht.
|
|
|
05/11/2013, 15:43
|
#8
|
elite*gold: 0
Join Date: Jun 2011
Posts: 70
Received Thanks: 7
|
Okey danke  D
|
|
|
05/15/2013, 20:16
|
#9
|
elite*gold: 528
Join Date: Jan 2012
Posts: 2,127
Received Thanks: 2,403
|
Quote:
Originally Posted by sezer0012
[SIZE="5"]Erklärung:
[I]Wenn man sich registriert speichert er in den Ordner Spieler 2 Textdateien, ein mal Username und Passwort.
|
Eine offline Registrierung hat bitte welchen Sinn?
Dann vielleicht doch eher Server+ php + mysql?
MfG
|
|
|
 |
Similar Threads
|
autoit and mysql login/register forms
09/12/2012 - AutoIt - 1 Replies
ive been trying to create login form in autoit with mysql... and it logins nomater what you enter...
$SQL = _MySQLConnect($Connection, $Connection, "mydb", $Connection)
If @error Then MsgBox(0, "", "failed")
$VerifyLoginInp = _Query($SQL, "SELECT username FROM accounts WHERE 'username' = '"&guictrlread($usernamelogin)&" '")
If GUICtrlRead($UsernameLogin) = $VerifyLoginInp Then
MsgBox(0, "", "KKKKKKKKKK")
;~ Exit
EndIf
|
login logout register script
10/08/2011 - General Coding - 2 Replies
hallo
ich würde gerne wissen was man alles für Login Logout Register Script so braucht braucht wäre nett wen mir einer ein Guide zeigen könnte wie man so was macht
Danke schon mal im voraus
sorry wenn ich falsch bin
|
register,login und logout script
10/07/2011 - Main - 1 Replies
hallo
ich würde gerne wissen was man alles für Login Logout Register Script so braucht wäre nett wen ich eine sinnvolle Antwort bekäme
danke schon mal im voraus
|
[AutoIT]Login Script
10/10/2010 - AutoIt - 9 Replies
Hay Leuts Hatt Jemand Eventl Ein Login Script Das Mit Meiner DB Verbindet Und Dan Die Login Daten Überprüft?
|
Help with autoit login script
03/16/2008 - Cabal Online - 7 Replies
I was wondering if there was a script to do the image verification when you login or to somehow bypass this screen.
|
All times are GMT +1. The time now is 19:19.
|
|