Login-Routine

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Login-Routine

BeitragSa, März 27, 2010 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich habe eine Loginroutine.
Also...
Der Spieler sendet ein Byte(1), seinen Namen und das Passwort. Daraufhin gleicht der Server die angekommenen Daten mit einer Txt-Datei ab. Wenn die Daten im Dokument gefunden wurden und auch Stimmen, wird dem Spieler gesagt das er "kommen kann", wenn die Daten allerdings nicht gefunden wurden wird ein Byte(7) gesendet und der Spieler connectet nicht.

Problem: Wenn in meiner Txt-Datei nicht in der 1.Zeile die Daten stehen, gibt das Programm irgendwie beides zurück. Warum? Gibt's vielleicht sogar eine bessere Lösung? Rolling Eyes


(stark gekürzter, auf Anfrage gibts mehr) Code:
Code: [AUSKLAPPEN]
Case 1
   user_file = ReadFile("users\user.txt")
      name$ = ReadString(svr)
      pass$ = ReadString(svr)
      While Not Eof(user_file)
         user$ = ReadLine(user_file)
         u.users = New users
         u\login = Instr(user$,name$+":"+pass$)
      Wend
   CloseFile(user_file)
   
   For u.users = Each users
      If u\login<>0 Then
         Print "Neuer Spieler!"
      Else
         WriteByte svr,7
         SendUDPMsg svr,ip,port
      EndIf
   Next


Mfg,
N0X

P.S.: Ich glaube es liegt an Instr, dieses gibt ja die Position zurück. Dafür meine Abfrage mit "If u\login<>0 Then". Trotzdem geht's nicht. Warum?
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

Lion

BeitragSa, März 27, 2010 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, weil du ja in der For schleife jedes mal einen neuen user erstellst.
So kommt es vor, dass er für jedes mal, dass er es nicht findet ein Byte(7) verschickt und für jedes mal, dass er findet einen positiven bescheid abgibt.
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x

N0X

BeitragSa, März 27, 2010 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ok, aber wie kann ich das denn anders machen?

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
 

Lion

BeitragSa, März 27, 2010 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
If Instr(user$,name$+":"+pass$) Then
Print("Got existing account")
Exit
Else
Print("Nothing...")
Continue
EndIf


Das gleich anstatt user\login=Instr...
und den abschnitt unten kannste dir dann sparen.

edit: Huch, continue gibts ja net, guck mal hier: https://www.blitzforum.de/foru...t=continue
wobei dus in diesem falle auch weglassen kannst, da es ja schon am ende praktisch ist.
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb
AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x

N0X

BeitragSa, März 27, 2010 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm...
Mit den Daten der 1.Zeile in der Txt-Datei geht's. Aber wenn ich die Daten in der 2.Zeile eingebe, gehts wieder nicht. (TXT_Datei: 1.Zeile: pete:po, 2.Zeile: n0x:no)

Hier Code:
Code: [AUSKLAPPEN]
               Case 1
            user_file = ReadFile("users\user.txt")
               name$ = ReadString(svr)
               pass$ = ReadString(svr)
               While Not Eof(user_file)
                  user$ = ReadLine(user_file)
                  
                  If Instr(user$,name$+":"+pass$) Then
                     For p.Player = Each Player
                           WriteByte svr,1
                             WriteInt svr,ip
                             WriteInt svr,port
                        WriteString svr,name$
                             SendUDPMsg svr,p\ip,p\port
                             WriteByte svr,1
                             WriteInt svr,p\ip
                             WriteInt svr,p\port
                        WriteString svr,p\name$
                             SendUDPMsg svr,ip,port
                         Next
                     p.Player = New Player
                     p\name$ = name$
                     p\ip$ = ip
                     p\port = port
                     
                         Print "Player Connected... "+p\name$
                     Exit
                  Else
                     WriteByte svr,7
                     SendUDPMsg svr,ip,port
                  EndIf
               Wend
            CloseFile(user_file)


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group