Ini Read frage

11/23/2011 19:55 xEr0r#1
Code:
Func _login()
	$read4 = GUICtrlRead($Input1)
	$read5 = GUICtrlRead($Input2)
	$read6 = IniRead(@ScriptDir & "\SaveFiles\Daten.ini", "Benutzername", "1", 
	$read7 = IniRead(@ScriptDir & "\SaveFiles\Daten.ini", "Passwort", "2", 
	If $read4 = $read6 & $read5 = $read7 then
	MsgBox(0, "Login", "Sie haben sich erfolgreich eingeloggt")
	For $i = 1 to 100
	GUICtrlSetData($Progress1, $i)
	GUISetState(@SW_SHOW, $Form3)
	Next
     Else
	MsgBox(0, "Login", "Benutzername oder Passwort falsch")
EndIf
EndFunc
Wie kann ich es machen, dass bei $read6 die erste zeile des Inis und bei $read7 die 2. ausgelesen wird`?
11/23/2011 20:01 omer36#2
[Only registered and activated users can see links. Click Here To Register...]

Wozu einen 2. Thread öffnen?

Manche sind einfach zu dumm zum Googlen.

FileReadLine()
11/23/2011 20:39 2F4U#3
Für FileReadLine ist eine Ini aber unötig.
Wenn du in jeder Zeile einen neuen Key hast täte ich einfach mit IniReadSektion die Keys auslesen und dann dan hast du in der 2. Spalte des Arrays auch die zweite Zeile
11/23/2011 20:48 xEr0r#4
Code:
Func _login()
	$read4 = GUICtrlRead($Input1)
	$read5 = GUICtrlRead($Input2)
	$read6 = FileReadLine(@ScriptDir & "\SaveFiles\Daten.xml",1)
	$read7 = FileReadLine(@ScriptDir & "\SaveFiles\Daten.xml",2)
	If $read4 = $read6 & $read5 = $read7 then
	MsgBox(0, "Login", "Sie haben sich erfolgreich eingeloggt")
	GUISetState(@SW_SHOW, $Form3)
     Else
	MsgBox(0, "Login", "Benutzername oder Passwort falsch")
EndIf
EndFunc
Hab jz aber das Problem, dass er sich immer erfolgreich einloggt, egal was ich eingebe, woran kann das liegen?
11/23/2011 20:52 2F4U#5
Ersetzt das & durch ein AND (bei IF)und versuche es Nochmal
11/23/2011 22:11 Lawliet#6
Quote:
Originally Posted by xEr0r View Post
Code:
Func _login()
	$read4 = GUICtrlRead($Input1)
	$read5 = GUICtrlRead($Input2)
	$read6 = IniRead(@ScriptDir & "\SaveFiles\Daten.ini", "Benutzername", "1", 
	$read7 = IniRead(@ScriptDir & "\SaveFiles\Daten.ini", "Passwort", "2", 
	If $read4 = $read6 & $read5 = $read7 then
	MsgBox(0, "Login", "Sie haben sich erfolgreich eingeloggt")
	For $i = 1 to 100
	GUICtrlSetData($Progress1, $i)
	GUISetState(@SW_SHOW, $Form3)
	Next
     Else
	MsgBox(0, "Login", "Benutzername oder Passwort falsch")
EndIf
EndFunc
Wie kann ich es machen, dass bei $read6 die erste zeile des Inis und bei $read7 die 2. ausgelesen wird`?
Bei den IniRead Functionen mal ein ")" setzen, außerdem fehlt der "default" Parameter.
[Only registered and activated users can see links. Click Here To Register...]
Du solltest die Benutzerdaten aber mindestens mit _StringEncrypt verschlüsselt in der Ini ablegen, denn sonst wird es jedes Kid schaffen, sich da anzumelden.
11/24/2011 19:45 xEr0r#7
Ja das mit dem Crypten mach ich noch^^
upps war die falsche login funktion hier die richtige:

Code:
Func _login()
	$read4 = GUICtrlRead($Input1)
	$read5 = GUICtrlRead($Input2)
	$read6 = FileReadLine(@ScriptDir & "\SaveFiles\Daten.xml",1)
	$read7 = FileReadLine(@ScriptDir & "\SaveFiles\Daten.xml",2)
	If $read4 = $read6 And $read5 = $read7 then
	MsgBox(0, "Login", "Sie haben sich erfolgreich eingeloggt")
	GUISetState(@SW_SHOW, $Form3)
     Else
	MsgBox(0, "Login", "Benutzername oder Passwort falsch")
EndIf
EndFunc
11/24/2011 19:59 KDeluxe#8
Dafür kannst XML-Funktionen oder einfach _StringBetween() benutzen. Außerdem würde ich dir zu "==" raten, anders als bei nur einem "=" wird dabei die Groß- und Kleinschreibung beachtet.
11/24/2011 20:10 xEr0r#9
und wenn ich es nicht mit StringBetween machen will? Die Dateiendung ist eig egal. kann auch was andres sein. Es soll nur funktionieren^^
11/24/2011 20:38 KDeluxe#10
Wenn die Daten im normalen Textformat vorliegen reicht FileReadLine() aus. Du solltest die Daten aber verschlüsselt speichern. Ich habe mal ein Beispiel erstellt, dein Script müsstest du dementsprechend anpassen.

PHP Code:
#include <Crypt.au3>

;Benutzer anlegen (zu Testzwecken)
$hFile FileOpen("Login.txt"2)
FileWrite($hFileHex(_Crypt_EncryptData("Benutzername"DriveGetSerial(@HomeDrive), $CALG_RC4)))


GUICreate("Beispiel"100100)
$Button GUICtrlCreateButton("Beenden"00100100)
Call("_Login")

Do
    
Sleep(10)
    
$Msg GUIGetMsg()
Until $Msg == -Or $Msg == $Button

Func _Login
()
    
$Input InputBox("Login""Benutzername""Benutzername")
    
$UserName FileReadLine("Login.txt"1)

    If 
Hex(_Crypt_DecryptData($InputDriveGetSerial(@HomeDrive), $CALG_RC4)) == $UserName Then
        MsgBox
(64"Login""Sie haben sich erfolgreich eingeloggt!")
        
GUISetState(@SW_SHOW)
    Else
        
MsgBox(48"Login""Die eingegebenen Daten sind falsch!")
        Exit
    EndIf
EndFunc 
11/24/2011 20:52 xEr0r#11
danke hat geklappt