kostenloser Webspace werbefrei: lima-city


Problem - VB Login-Registrations Programm

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    t*******g

    Hi,
    ich habe ein Problem mit meiner selbst gemachten Login-Form.
    Bis jetzt bin ich soweit das Ich mich Registieren kann
    ( mit Namen, Passwort, Geheimfrage + Antwort und Captcha ),
    außerdem habe ich eine extra Form für "Passwort vergessen" und "Username vergessen".
    Dies funktioniert auch alles super. Es funktioniert auch das einloggen mit dem erstellten Account.
    Doch nun zu meinem Problem:
    Ich möchte nicht nur einen Account erstellen sondern mehrere. Doch wenn ich mich ein 2tes Mal registere, dann wird mein 1ster Account gelöscht. Wie kann ich es also hinbekommen das er beide Accounts in den Settings speichert ?
    Wäre super wenn mir jemand eine Antwort geben könnte.

    Danke im Voraus
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich weiß ja nichtwie deine Settingsdateiaussieht. Ichnehe jetzt einfach mal an das es eine Art INI ist. Dann musst du eine Routine schreiben wo halt mehrere Userdaten geschpeichert werden können, bzw. geladen. Z.B. durch ein Array.

    Eine andere Möglichkeit ist es die Userdaten nicht in den Settings zu speichern, wozu ich persönlich eher tendieren würde. Denn eigentlich hat Username, Passwort etc. nichts in den Settings zu suchen. Wenn du es einfach halten möchtest schreibe die ganzen Daten in eine Binärdatei, sinnvollerweise natürlich verschlüsselt. Du musst für einen Datensatz halt nur eine feste Struktur definieren, dann ein Array das in der Binärdatei gespeichert/geladen wird.

    Dritte Möglichkeitwähre dann das ganze über eine kleine Datenbank zu realisieren.
  4. Autor dieses Themas

    t*******g

    Vielen Dank für deine Antwort.
    Ich werde mal schau'n ob ich es mit einem Array bzw. einer Datenbank hin bekomme.
    Wenn nicht werde ich einfach ich dich einfach nochmal kontaktieren. :wink:
  5. Ja also wie gesagt, ich weiß ja nicht 100% wafür du das ganze brauchst.

    Aber recht einfach dürftest du es halt it einer Binärdatei hin bekommen. Definiere deinen eigenen Type, dann brauchst du nur noch eine Schleife die die Benutzerdaten in eine Binärdatei speichert, geschweige denn ausliest. Relativ simple Sache, auchwenn man da gerne mal ein paar Denkfehler einbaut.
  6. zwei fragen:
    1. wofür is das ding
    2. das geht mit VB o.o

    ich muss mich doch mal mer mit VB beschäftigen

    damit das hier nicht wie spam aussieht noch was sinvolles ^^

    also ich habe mich früher mit VB beschäftigt und aufgegeben weil mich diese .application files aufgeregt hatten und es so wenige funktionen gab und jetzt soll sowas gehen.

    kann mir mal einer erklären was ich falsch mache das gleiche habe ich in c# nähmlich auch im moment

    Beitrag zuletzt geändert: 14.10.2010 17:31:23 von game-web
  7. Es reicht wenn du dich dann mehr mit C# beschäftigst.

    NAtürlich geht das mit VB. VB ist durchaus eine vollwertige Programmiersprache. Im übrigen unterscheiden sich die .NET Programiersprachen eigentlich nur in der Syntax. Du kannst also in C# die gleichen Programme schreiben wie in VB und umgekehrt. Sogar die Geschwindigkeit der Programme ist gleich.

    Lediglich da C# momentan eines der beliebteren Kinder von Microsoft ist wird es ein wenig mehr unterstüzt. Also wenn du z.B. ein Spiel mit XNA programmieren möchtest findest du da ein wenig mehr Unterstützung in C# als in VB, aber mit ein wenig mehr Programmieraufwand kannst du XNA Spiele durchaus auch in VB schreiben.

    Du darfst nur nicht denken das alles nur zusammengeklickt werden kann, ein wenig Programmcode musst du schon schreiben, und je nach Komplexität deiner Anwendung sogar recht viel Code.
  8. Autor dieses Themas

    t*******g

    @game-web Klar geht das in Visual Basic :wink:
    Und damit mein Beitrag auch nicht als Spam gekennzeichnet wird, hier nochmal ein Tipp
    Wegen deinem Problem mit der .application Datei,
    du kannst einfach die Endung in .exe umschreiben,
    dann solltest du eine .exe Datei raus bekommen :wink:
    ist zumindest bei mir so...

    @tomarr Ich weiß noch nicht wofür ich das Login System später mal brauche :wink:
    Ich liege zur Zeit im Krankenhaus und hatte langeweile.
    Sorry das ich frage, aber wie ist eine Binärdatei aufgebaut? Bin noch ein ziemlicher Noob in VB :)
  9. Wie soll ich nur eine Binärdatei einfach erklären?

    Also es gibt Stringdateien, in diesen Dateien wird z.B. ein String im Klartext gespeichert, wie eine *.txt Datei. Nachteil, sie können nur die Ascii-Zeichen 0-256 speichern.

    Bei Binärdateien wird nicht als String sondern halt Binär gespeichert. Hat den Vorteil das jeder mögliche Binärwert gespeichert werden kann, und nicht nur das was die Tastatur her gibt.

    Der weitere Vorteil daraus ist, du kannst in Visualbasic eigene Typen erstellen.

    Als Beispiel:

    Normalerweise würdest du in deinem Programm z.B. schreiben...

    Dim sName as String
    Dim sPasswort as String
    Dim iAlter as Integer
    .
    . Weiterer Code
    .
    
    sNae = "Hosipups"
    sPasswort = "StinkiBein26"
    iAlter = 5
    .
    .
    .


    Und beim Speichern Gehst du dann wieder alle ab, also sName, sPasswort, iAlter.

    Du kannst es aber auch so schreiben. (In einem eigenen Modul)
    Public Structure myUserData
            Dim sName As String
            Dim sPasswort As String
            Dim iAlter As Integer
        End Structure


    Declarien brauchst du dann nur noch z.B. (In der Form)

    Dim myUsers as myUserData


    Nun kannst du sie füllen.

    With myUsers
                .sName = "Blablabla"
                .sPasswort = "Bädiebä"
                .iAlter = 6
            End With


    Sieht erstmal komlizierter aus, aber wenn du Speuchern willst usst du nur noch myUsers angeben.

    Sprich du kannst eigene Formatstypen, oder auch Strukturen gennant, als Block in eine Binärdatei schreiben, und auch wieder heraus laden. Es ist nur wichtig dass du beim speichern und beim laden die selbe Struktur benutzt.


  10. Autor dieses Themas

    t*******g

    Hi, nochmals danke für die Erklärung.
    Ich bekomme aber diese Binäredatei nicht in meine Login Form.
    Ich habe 4 verschiedene Formen...( Eine Form für den Login, eine für die Registration, eine für Passwort vergessen und eine für Username vergessen)
    Ist dafür nicht vllt. doch eine Datenbank besser ?
  11. z*k

    Natürlich ist eine DB gut, besonders wenn du nachher noch dies und das speichern willst.
    Wenn du aber nur ein Array speichern willst, würde ich mir converter.Serialize() in System.Runtime.Serialization.Formatters.Binary mal anschauen, damit habe ich bis jetzt auch alles gemacht
  12. Kommt drauf an.

    Ein Datenbank für ein so kleines Projekt, und wie du sagtest, du bist Anfänger, du öchtest ein wenig üben usw. ist dann doch etwas überzogen. Zudem wirst du wahrscheinlich hier im Forum verzweifeln wenn du nicht ein unterstützendes Buch neben dir liegen hast.

    Von daher hat ZDK nicht ganz unrecht.

    Aber, deine Programmstruktur scheint noch etwas im argen zu liegen. Was ist denn mit dem eigentlichen Programm?

    Normalerweise müsstest du ja ein Programm haben, eine Hauptform sozusagen, die diese ganzen eingaben überhaupt benötigt.

    Also ich schreibe mal einfach wie das bei mir aussehen würde, dementsprechend, deiner Idee folgend währen es 5 Formen.
    frm steht dabei imer für Form und dahinter eine eindeutiger Name.

    frmMain
    frmLogin
    frmRegistration
    frmPasswortVergessen
    frmUsernameVergessen

    Also ungefähr so. Wobei frmLogin und frmRegistration dann von frmMain aufgerufen werden, und frmPasswortVergessen und frmUsernaeVergessen können dann nach Bedarf von frmLogin aufgerufen werden.
  13. Autor dieses Themas

    t*******g

    Also meine Formen heißen:
    login
    register
    forgottenpw
    forgottenname
    MainProgramm

    Hier der Code den ich bis jetzt in meiner Registier Form habe:
    Public Class Register
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            'Registration - Wenn die Felder leer sind soll eine Fehlermeldung kommen.
    
            If TextBox1.Text = "" Then
                MsgBox("Bitte geben Sie ihr gewünschten Username ein!", MsgBoxStyle.Critical, Title:="Ungültiger Username!")
            End If
            If TextBox2.Text = "" Then
                MsgBox("Bitte geben Sie ihr gewünschtes Passwort ein!", MsgBoxStyle.Critical, Title:="Ungültiges Passwort!")
            End If
            If TextBox3.Text = "" Then
                MsgBox("Bitte geben Sie eine Antwort auf die Geheimfrage ein!", MsgBoxStyle.Critical, Title:="Ungültige Antwort!")
            End If
            If Not TextBox4.Text = Label3.Text Then
                MsgBox("Überprüfen Sie ihre Sicherheitsabfrage!", MsgBoxStyle.Critical)
            End If
    
            ' Nochmaliges Abfragen + Daten Speichern
    
            If TextBox4.Text = Label3.Text And Not TextBox1.Text = "" And Not TextBox2.Text = "" And Not TextBox3.Text = "" Then
                My.Settings.Username = Me.TextBox1.Text
                My.Settings.Password = Me.TextBox2.Text
                My.Settings.Question = ComboBox1.SelectedItem()
                My.Settings.Answer = Me.TextBox3.Text
                MsgBox("Ihre Registierung war erfolgreich!", MsgBoxStyle.MsgBoxRight, Title:="Registierung war erfolgreich!")
                Me.Close()
            End If
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            'Abbrechen Button - Form schliessen
            Me.Close()
        End Sub
        Private Sub Register_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Captcha laden
            rndzahl()
        End Sub
        Sub rndzahl()
            'captcha
            Dim r As New System.Random()
            Dim a As Byte
            For a = 1 To 5
                Label3.Text = (r.Next(0, 9))
            Next
            For a = 1 To 5
                Label3.Text = (Label3.Text + (r.Next(0, 2500)))
            Next
        End Sub
        Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
            ' Anzeigen des Captcha's
            rndzahl()
            Refresh()
        End Sub
    End Class


    Ich glaub mein Fehler liegt in der ersten Sub ... Dort wo die Daten letzten Endes gespeichert werden soll. Aber wenn die Login-Form schon vor der Main-Form also dem Programm gestartet werden soll... dann kann ich es ja nicht von der Main aus Starten oder ?

    P.S. : Ich habe mir schonmal ein VB Buch gekauft, aber das liegt noch daheim ... Wie gesagt ich bin zur Zeit im Krankenhaus :wink:
  14. Doch das geht. Bzw. musst dunicht machen, aber es gibt halt verschiedene Möglichkeiten. Du kannst die Form Login von der Main starten, und solange das Login fehl schlägt die Mainform verstecken, nur eine Möglichkeit.

    Aber ist natürlich OK wenn du es auch so machst, solange es funktioniert.

    Was du aber vielleicht noch machen könntest, Lege dir ein Modul in dem Projekt an. (Besser noch eine Klasse, aber ich weiß nicht ob du dich mit Klassen schon auskennst), und schreibe dort ein paar Subroutinen die du von überall aus dem Programm, egal welche Form, aufrufen kannst.

    Ich denke da an Subroutinen für das speichern und laden der Userdaten usw.

    Das ganze geht auch mit Variablen, wenn du sie Public in dem Modul deklarierst, außerhalb einer Subroutine. Es gibt verschiedene Mögllichkeiten Variablen Public zu deklarieren, aber ich habe es mir bisher immer einfach gemacht und diese in einem Modul deklariert und gut is. Zumindest bei kleineren Projekten stört es nicht es so zu machen. Bei größeren sollte man dann doch schon mit Klassen usw. vorgehen.

    Ich denke mal das könnte dir schon weiter helfen.
  15. Autor dieses Themas

    t*******g

    Ok, nochmals vielen Dank.
    Ich werd's einfach mal ausprobieren :)
    Aber noch eine Frage. Kann ich diesen ganzen Registier-Vorgang nich auch in ein Modul schreiben?
  16. Hmm, gute Frage. Rein Theoretisch kannst du alles ohne Form schreiben. Aber ob das dann noch Sinn macht mit Visual Basic zu programmieren ist die Frage.

    Aber ja, du könntest dir eine Mainform schreiben und den Rest über Klassenvererbung lösen. Zumindest Theoretisch, ausprobiert habe ich sowas noch nicht.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!