Soo
Ich hab hier beim Praktikum nun mein Programm in die 1. Phase gebracht.
Was fehlt noch?
-Accountabfrage bei Serialregistration, ob bereits vorhanden ist.
-Email-Sendefunktion
-Vollversion registrieren
-FAQ
Spoiler anzeigen
;; ______________________________________________
; / /|
; / / |
; / / |
; / / |
; /______________________________________________/ |
; | Author: Schrubber | |
; | Name: SafeThat | |
; | Version: 1.0 | /
; | Homepage: http://www.Schrubbershomepage.de | /
; | Date: 7. Juli 2010 | /
; | Thanks to: progandy (_MySQL UDF) | /
; |______________________________________________|/
;Was noch fehlt:
;Vollversion
;Emailsendefunktion
;EmailDaten
;Registerserial wegen Accountabfrage (ob vorhanden) nochmal überprüfen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <mysql.au3>
#include <libMySQLdll.au3>
#include <Inet.au3>
OnAutoItExitRegister("_cleanup")
[/autoit] [autoit][/autoit] [autoit]Global $MySQLConn
Global Const $toolname = "SafeThat Testversion"
Global Const $short = "Safethat"
Global Const $Username = "root"
Global Const $Password = "root"
Global Const $MySQLServerName = "localhost"
Global Const $dbname = "lolrofl"
Global Const $Database = $dbname
Global Const $table = "tool"
Global Const $link = "http://Schrubbershomepage.de"
Global Const $linkfaq = "http://Schrubbershomepage.de/Faq.html"
Global COnst $linkvollversion = "http://Schrubbershomepage.de/Vollversion.html"
Global $i_wunschaccount = ""
Global $i_wunschpasswort = ""
Global $login = 0
_MySQL_InitLibrary()
If @error Then
TrayTip('Error', 'libmysql.dll konnte nicht gefunden werden', 10, 3)
Sleep(10000)
Exit
EndIf
Global $MySQLConn = _MySQL_Init()
$Connected = _MySQL_Real_Connect($MySQLConn, $MySQLServerName, $UserName, $Password, $Database)
If Not $Connected Then
TrayTip('Error', 'Verbindung zur Datenbank konnte nicht hergestellt werden', 10, 3)
Sleep(10000)
Exit
EndIf
$GUI1 = GUICreate($toolname, 386, 332, 192, 124)
$dateimenu = GUICtrlCreateMenu("Datei")
$serialitem = GUICtrlCreateMenuItem("Serial registrieren", $dateimenu)
$datenitem = GUICtrlCreateMenuItem("Daten ändern", $dateimenu)
$vollversionitem = GUICtrlCreateMenuItem("Vollversion", $dateimenu)
$exititem = GUICtrlCreateMenuItem("Exit", $dateimenu)
$fragemenu = GUICtrlCreateMenu("?")
$kontaktitem = GUICtrlCreateMenuItem("Kontakt", $fragemenu)
$aboutitem = GUICtrlCreateMenuItem("About", $fragemenu)
$faqitem = GUICtrlCreateMenuItem("FAQ´s", $fragemenu)
$b_login = GUICtrlCreateButton("Login", 264, 256, 113, 25, $WS_GROUP)
$b_buyfull = GUICtrlCreateButton("Vollversion kaufen", 136, 257, 113, 23, $WS_GROUP)
$b_registerserial = GUICtrlCreateButton("Serial registrieren", 8, 256, 113, 25, $WS_GROUP)
$l_headline = GUICtrlCreateLabel($short, 50, 24, 260, 58)
GUICtrlSetFont(-1, 28, 800, 2, "Nightclub BTN")
$l_username = GUICtrlCreateLabel("by Schrubber",210, 94, 80, 17)
$i_username = GUICtrlCreateInput("", 104, 144, 233, 21)
$i_passwort = GUICtrlCreateInput("", 104, 176, 233, 21, $ES_PASSWORD)
$l_username = GUICtrlCreateLabel("Username", 40, 144, 52, 17)
$l_password = GUICtrlCreateLabel("Password", 40, 176, 50, 17)
$l_info = GUICtrlCreateLabel("Sie nutzen die", 40, 224, 74, 17)
$l_version = GUICtrlCreateLabel("Testversion", 112, 224, 59, 17)
GUICtrlSetColor(-1, 0xFF0000)
$l_leftinfo = GUICtrlCreateLabel("Verbleibende Zeit:", 16, 296, 90, 17)
$l_timeleft = GUICtrlCreateLabel("(No time)", 112, 296, 45, 17)
GUISetState(@SW_SHOW, $GUI1)
While True
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $b_login
_login()
Case $b_registerserial
_registerserial()
Case $serialitem
_registerserial()
Case $datenitem
_datenaendern()
Case $exititem
Exit
Case $faqitem
ShellExecute($linkfaq)
Case $vollversionitem
_vollversion()
Case $kontaktitem
_contact()
Case $aboutitem
_about()
Case $b_buyfull
ShellExecute($link)
EndSwitch
WEnd
Func _login()
if(GUICTRLRead($b_login) = "Login") then
if(GuiCtrlRead($i_username) = "") then
MSGBOX(0, "Fehler", "Bitte geben sie einen Usernamen ein!")
elseif (GuiCtrlRead($i_passwort) = "") Then
MSGBOX(0, "Fehler", "Bitte geben sie ein Passwort ein.")
Else
$dbuserpw = _mysql_checklogin($MySQLConn, $table, GUICtrlRead($i_username))
If $dbuserpw = GUICtrlRead($i_passwort) Then
MsgBox(0, "Anmeldung erfolgreich", "Sie haben sich erfolgreich eingeloggt.")
;Versionscheck V = Vollversion
$version = _mysql_checkversion($MySQLConn, $table, GUICtrlRead($i_username))
if($version = "V") then
GuiCtrlSetData($l_version, "Vollversion")
GuiCtrlSetColor($l_version, 0x006400)
Else
GuiCtrlSetData($l_version, "Testversion")
GuiCtrlSetColor($l_version, 0xFF0000)
;Versionscheck Ende
EndIf
;Timecheck TTMMJJJJ
$time = _mysql_checktime($MySQLConn, $table, GUiCtrlRead($i_username))
$abgelaufen = 0
GuiCtrlSetData($l_timeleft, $time)
if($time < "1") Then
$abgelaufen = 1
MSGBox(0, "Fehler", "Ihre Version ist abgelaufen. Zum Kauf der Vollversion / Verlängerung der Vollversion bitte auf 'Vollversion kaufen' drücken.")
GUICtrlSetData($b_login, "Exit")
Else
if($time < "30") Then
GuiCtrlSetColor($l_timeleft, 0x00FF00)
elseif($time < "20") Then
GuiCtrlSetColor($l_timeleft, 0xFFA500)
elseif($time < "10") Then
GuiCtrlSetColor($l_timeleft, 0xFF0000)
EndIf
GUICtrlSetData($b_login, "Weiter")
EndIf
;Timecheck Ende
Else
MsgBox(0, "Anmeldung fehlgeschlagen", "Bei der Anmeldung trat ein Fehler auf. Bitte überprüfen sie Ihren Account / Ihr Passwort.")
EndIf
EndIf
elseif (GUICTRLRead($b_login) = "Exit") Then
Exit
elseif(GUICtrlRead($b_login) = "Weiter") then
$login = 1
_startTool()
EndIf
EndFunc ;==>_login
Func _registerserial()
$_1 = GUICreate("Serial registrieren", 301, 190, 400, 50)
$title = GUICtrlCreateLabel("Serial registrieren", 55, 10, 212, 34)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetFont(-1, 20)
$l_wunschaccount = GUICtrlCreateLabel("Account", 5, 50, 44, 20)
$i_wunschaccount = GUICtrlCreateInput("", 50, 48, 150, 21)
$l_wunschpasswort = GUICtrlCreateLabel("Passwort", 5, 80, 44, 20)
$i_wunschpasswort = GUICtrlCreateInput("", 50, 77, 150, 21, $ES_Password)
$part1 = GUICtrlCreateInput("", 5, 114, 50, 21)
GUICtrlSetLimit(-1, 5)
$part2 = GUICtrlCreateInput("", 65, 114, 50, 21)
GUICtrlSetLimit(-1, 5)
$part3 = GUICtrlCreateInput("", 125, 114, 50, 21)
GUICtrlSetLimit(-1, 5)
$part4 = GUICtrlCreateInput("", 185, 114, 50, 21)
GUICtrlSetLimit(-1, 5)
$part5 = GUICtrlCreateInput("", 245, 114, 50, 21)
GUICtrlSetLimit(-1, 5)
$b_sendserial = GUICtrlCreateButton("Abschicken", 20, 145, 70, 30, $WS_GROUP)
$b_help = GUICtrlCreateButton("Hilfe", 110, 145, 70, 30, $WS_GROUP)
$b_exitserial = GUICtrlCreateButton("Exit", 200, 145, 70, 30, $WS_GROUP)
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
GUISetState(@SW_Hide)
ExitLoop
Case $b_exitserial
GUISetState(@SW_Hide)
ExitLoop
Case $b_help
ShellExecute($linkfaq)
Case $b_sendserial
$serial = GUICtrlRead($part1)&"-"&GUICtrlRead($part2)&"-"&GUICtrlRead($part3)&"-"&GUICtrlRead($part4)&"-"&GUICtrlRead($part5)
if(GUICtrlRead($i_wunschaccount) = "") Then
MSGBOX(0, "Fehler", "Bitte tragen sie einen Account ein.")
Elseif(GUICtrlRead($i_wunschpasswort) = "") Then
MSGBOX(0, "Fehler", "Bitte tragen sie ein Passwort ein.")
ElseIf(StringLen($serial) < 29) then
MSGBOX(0, "Fehler", "Ihr Serial ist nicht lang genug. Bitte überprüfen sie Ihre Eingabe!")
Else
_mysql_registerserial($MySQLConn, $table, $serial)
EndIf
EndSwitch
WEnd
EndFunc ;==>_registerserial
[/autoit] [autoit][/autoit] [autoit]Func _datenaendern()
if($login = 0) Then ;Falls nicht eingeloggt
MSGBOX(0, "Fehler", "Sie müssen sich zuerst einloggen.")
Else
$versionabfrage = _mysql_checkversion($MySQLConn, $table, GUICtrlRead($i_username)) ;Abfrage aus der
if($versionabfrage = "V") Then
$version = "Vollversion"
Else
$version = "Testversion"
EndIf
$datenaendern = GUICreate("Daten ändern", 386, 330, 192, 124)
$l_title = GUICtrlCreateLabel("Userdaten", 98, 17, 201, 51)
GUICtrlSetFont(-1, 24, 800, 0, "Nightclub BTN")
$group1 = GUICtrlCreateGroup("Persönliche Daten", 24, 80, 337, 177)
$l_account = GUICtrlCreateLabel("Account", 82, 104, 44, 17)
$l_accountname = GUICtrlCreateLabel(GUICtrlRead($i_username), 136, 104, 32, 17)
$l_passwort = GUICtrlCreateLabel("Passwort", 79, 128, 47, 17)
$l_passwortwert = GUICtrlCreateLabel(GUICtrlRead($i_passwort), 136, 128, 22, 17)
$l_version = GUICtrlCreateLabel("Version", 88, 176, 39, 17)
$l_versionsart = GUICtrlCreateLabel($version, 136, 176, 59, 17)
if($l_versionsart = "Vollversion") Then
GUICtrlSetColor($l_versionsart, 0x006400)
Else
GUICtrlSetColor($l_versionsart, 0xFF0000)
EndIf
$l_zeit = GUICtrlCreateLabel("Noch gültig (Tage)", 32, 200, 92, 17)
$l_zeitwert = GUICtrlCreateLabel("", 136, 200, 40, 17)
$l_serialwert = GUICtrlCreateLabel("", 128, 224, 191, 17)
$l_serial = GUICtrlCreateLabel("Serial", 96, 224, 30, 17)
$b_passwort = GUICtrlCreateButton("Passwort ändern", 24, 280, 81, 33, $WS_GROUP)
$b_registerserial2 = GUICtrlCreateButton("Serial registrieren", 128, 280, 97, 33, $WS_GROUP)
$b_quit = GUICtrlCreateButton("Exit", 248, 280, 113, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
GUISetState(@SW_Hide) ;Verstecken
ExitLoop ;Aus Schleife entfliehen
Case $b_registerserial2
GUISetState(@SW_Hide); Verstecken
_registerserial(); Serialregistrationsvorgang
ExitLoop
Case $b_quit
GUISetState(@SW_Hide) ;Verstecken
ExitLoop
Case $b_passwort ;Passwortänderung
$newpw = InPutBox("Neues Passwort", "Wie soll ihr neues Passwort lauten?")
EndSwitch
WEnd
EndIf
EndFunc ;==>_datenaendern
Func _vollversion()
ShellExecute($linkvollversion)
EndFunc ;==>_vollversion
Func _contact()
$gui3 = GUICreate("Kontaktformular", 594, 443, 192, 124)
$l_absender = GUICtrlCreateLabel("Absender", 40, 40, 49, 17)
$group1 = GUICtrlCreateGroup("Kontaktformular", 16, 16, 561, 377)
$l_betreff = GUICtrlCreateLabel("Betreff", 56, 106, 35, 17)
$i_absender = GUICtrlCreateInput("", 96, 40, 137, 21)
$l_absender = GuiCtrlCreateLabel("Email", 56,72,30,30)
$i_email = GUICtrlCreateInput("", 96, 72, 137, 21)
$i_betreff = GUICtrlCreateInput("", 96, 106, 137, 21)
$i_nachricht = GUICtrlCreateEdit("", 40, 152, 513, 225)
$b_send = GUICtrlCreateButton("Senden", 56, 397, 100, 33, $WS_GROUP)
$b_reset = GUICtrlCreateButton("Reset", 246, 397, 100, 33, $WS_GROUP)
$b_exit = GUICtrlCreateButton("Schließen", 432, 397, 97, 33, $WS_GROUP)
GUISetState(@SW_SHOW)
;Hier müssen die Daten der Email-Services noch eingegeben werden.
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
GUISetState(@SW_Hide)
ExitLoop
Case $b_exit
GUISetState(@SW_Hide)
ExitLoop
Case $b_reset
GUICtrlSetData($i_nachricht, "")
Case $b_send
;Hier muss die Email-Absendefunktion noch eingebaut werden.
EndSwitch
WEnd
EndFunc ;==>_contact
Func _about()
$_1 = GUICreate("About the Tool", 301, 208, 400, 50)
$group1 = GUICtrlCreateGroup("", 10, 10, 177, 80)
$group1text = GUICtrlCreateLabel("About the Tool", 32, 10, 72, 15)
GUICtrlCreateLabel("SafeThat", 15, 25, 160, 12)
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateLabel("Tim 'Schrubber' Lübbe", 15, 45, 160, 15)
GUICtrlSetColor(-1, 0xFF0000)
$aboutlink = GUICtrlCreateLabel($link, 15, 65, 160, 15)
GUICtrlSetColor(-1, 0x0000FF)
$group2 = GUICtrlCreateGroup("", 10, 100, 285, 100)
GUICtrlCreateLabel("Information", 30, 100, 52, 12)
GUICtrlCreateLabel("Dieses Programm ist ein Schutztool, um Software durch"&@CRLF&"eine in der Datenbank eingetragene Zugriffsberechtigung"&@CRLF&"zu nutzen. Dieses Programm ermöglicht Ihnen, Ihr"&@CRLF&"Programm mit sog. Serials zu sperren, sodass nur"&@CRLF&"bestimmte Kunden mit einem gültigen Account Zugriff auf"&@CRLF&"die Software haben.", 13, 113, 276, 84)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
GUISetState(@SW_Hide)
ExitLoop
Case $aboutlink
_openlink()
EndSwitch
WEnd
EndFunc ;==>_about
Func _startTool()
if($login = 0) Then
MSGBOX(0, "Fehler", "Sie müssen sich zuerst einloggen.")
Else
;/////////////////////////////////
;Hier komm das normale Tool rein!!
;/////////////////////////////////
EndIf
EndFunc ;==>_startTool
Func _mysql_checklogin($connection, $table, $account)
_MySQL_Real_Query($connection, StringFormat("SELECT `Password` FROM `%s` WHERE `Account` = '%s'", $table, _MySQL_Real_Escape_String($connection, $account)))
If @error Then
Return SetError(-1, @error, '')
Else
Local $hResult = _MySQL_Store_Result($connection)
Local $aReturn = _MySQL_Fetch_Row_StringArray($hResult)
_MySQL_Free_Result($hResult)
If UBound($aReturn) = 0 Then
Return SetError(-2, @error, '')
Else
Return $aReturn[0]
EndIf
EndIf
EndFunc ;==>_mysql_checklogin
Func _mysql_checkversion($connection, $table, $account)
_MySQL_Real_Query($connection, StringFormat("SELECT `Version` FROM `%s` WHERE `Account` = '%s'", $table, _MySQL_Real_Escape_String($connection, $account)))
If @error Then
Return SetError(-1, @error, '')
Else
Local $hResult = _MySQL_Store_Result($connection)
Local $aReturn = _MySQL_Fetch_Row_StringArray($hResult)
_MySQL_Free_Result($hResult)
If UBound($aReturn) = 0 Then
Return SetError(-2, @error, '')
Else
Return $aReturn[0]
EndIf
EndIf
EndFunc ;==>_mysql_checkversion
Func _mysql_checktime($connection, $table, $account)
_MySQL_Real_Query($connection, StringFormat("SELECT `Time` FROM `%s` WHERE `Account` = '%s'", $table, _MySQL_Real_Escape_String($connection, $account)))
If @error Then
Return SetError(-1, @error, '')
Else
Local $hResult = _MySQL_Store_Result($connection)
Local $aReturn = _MySQL_Fetch_Row_StringArray($hResult)
_MySQL_Free_Result($hResult)
If UBound($aReturn) = 0 Then
Return SetError(-2, @error, '')
Else
Return $aReturn[0]
EndIf
EndIf
EndFunc ;==>_mysql_checktime
Func _mysql_checkserial($connection, $table, $account)
_MySQL_Real_Query($connection, StringFormat("SELECT `Serial` FROM `%s` WHERE `Account` = '%s'", $table, _MySQL_Real_Escape_String($connection, $account)))
If @error Then
Return SetError(-1, @error, '')
Else
Local $hResult = _MySQL_Store_Result($connection)
Local $aReturn = _MySQL_Fetch_Row_StringArray($hResult)
_MySQL_Free_Result($hResult)
If UBound($aReturn) = 0 Then
Return SetError(-2, @error, '')
Else
Return $aReturn[0]
EndIf
EndIf
EndFunc ;==>_mysql_checkserial
Func _mysql_checkmail($connection, $table, $account)
_MySQL_Real_Query($connection, StringFormat("SELECT `Mail` FROM `%s` WHERE `Account` = '%s'", $table, _MySQL_Real_Escape_String($connection, $account)))
If @error Then
Return SetError(-1, @error, '')
Else
Local $hResult = _MySQL_Store_Result($connection)
Local $aReturn = _MySQL_Fetch_Row_StringArray($hResult)
_MySQL_Free_Result($hResult)
If UBound($aReturn) = 0 Then
Return SetError(-2, @error, '')
Else
Return $aReturn[0]
EndIf
EndIf
EndFunc ;==>_mysql_checkmail
Func _mysql_registerserial($connection, $table, $serial)
$accabfrage = _MySQL_real_Query($connection, StringFormat("SELECT `Account` FROM `%s` WHERE `Account` = '%s';", $table, GUICTRLRead($i_wunschaccount)))
MSGBOX(0, "", $accabfrage)
$query = _MySQL_Real_Query($connection, StringFormat("SELECT `Account` FROM `%s` WHERE `Serial` = '%s';", $table, $serial))
If $query Then Return SetError(1,0,0) ; Fehler bei der Abfrage
Local $pResult = _MySQL_Store_Result($connection)
If $pResult Then
Local $aResult = _MySQL_Fetch_Row_StringArray($pResult)
_MySQL_Free_result($pResult)
If Not IsArray($aResult) Then
MSGBOX(0, "Fehler", "Dieser Serial ist nicht vorhanden. Bitte wenden sie sich an das Support-Team.")
Return SetError(5,0,0) ; Keine Serial vorhanden
ElseIf $aResult[0] <> '' Then
MSGBOX(0, "Fehler", "Ihr Serial ist bereits benutzt. Bitte wenden sie sich an das Support-Team.")
Return SetError(2,0,0) ; Es gibt bereits einen Account in der Datenbank
EndIf
Else
MSGBOX(0, "Fehler", "Serial konnte nicht gefunden werden.")
Return SetError(4,0,0) ; Keine Serial vorhanden
EndIf
If $MYSQL_SUCCESS = _MySQL_Real_Query($connection, "UPDATE `"&$table&"` SET `Account` = '"&GUICtrlRead($i_wunschaccount)&"', `Password` = '"&GUICtrlRead($i_wunschpasswort)&"', `Lastcheck` = '"&@MDAY&@MON&@YEAR&"' WHERE `Serial` = '"&$serial&"';") Then
;$pResult = _MySQL_Store_Result($connection) ; kann man machen, ist hier aber nicht nötig so weit ich weiß
;If $pResult Then _MySQL_Free_result($pResult)
MSGBOX(0, "Erfolgreich", "Sie haben den Serial erfolgreich registriert.")
Return 1
Else
MSGBOX(0, "Fehler", "Es trat bei der Registration ein Fehler auf. Bitte probieren sie es später erneut.")
Return SetError(3,0,0) ; Fehler beim UPDATE
EndIf
EndFunc ;==>_mysql_registerserial
Func _cleanup()
If $MySQLConn Then _MySQL_Close($MySQLConn)
_MySQL_EndLibrary()
EndFunc ;==>_cleanup
Func _openlink()
ShellExecute($link)
EndFunc ;==>_openlink
Func _quit()
Exit
EndFunc
Danke nochmal an progandy wegen der _MySQL UDF und den Hilfen
Es fehlt noch ein wenig an dem Script, das Design lässt einwenig zu wünschen über, aber es funktioniert, soweit es der bisherige Stand zulässt.
Irgendwelche Bugs oä bitte melden.
Was NICHT funktioniert:
FAQ Seite
Vollversion kaufen (Extra Internetseite)
Kontaktabsende
Wer weiterbauen will (Die Funktionen, die noch fehlen), möge dies tun und mir dann schicken, damit ichs einbauen kann.
Bitte auch oben den Hinweis (Kommentarzeilen) NICHT löschen.
Danke
(Bei Fragen, was wo verändert werden muss, bitte einfach melden.
Auch die Online-Datenbank, die erstellt werden muss, werde ich hier heute Abend erst posten.
Aber was ich sagen kann:
Serial|Account|Passwort|Version|Time|Lastcheck
Text29|Test20|Text20|Text1|Int|Text
Lastcheck ist der Aufbau: DDMMYYYY
Time wird immer vorher eingestellt und passend dem Serial gewählt (Halt vll 30 Tage Testversion oder 2Monate durchgehend)
Version ist entweder ein "V" für Vollversion oder ein "T" für Testversion.
Serial ist ein Text im Format: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx (MIT BINDESTRICHE)
Mit Grüßen,
Schrubber