[Visual Basic] Kann ich es besser lösen?

08/03/2013 19:40 .Timoleini#1
Ich beschäftige mich nun was länger mit Visual Basic , und habe mir das ganze selbst ein bisschen beschrieben. Wollte mal Fragen ob der QuellCode so wirklich verwendbar ist oder ob ich es besser lösen kann.

-

Ich denke jeder der ein bisschen Programmmieren kann wird herrausfinden wofür ich das benötige :D


Code:
Imports MySqlLib3 ' MysqlLib3 Import ( Verweis Hinzufügen )
Imports System.Management
Public Class Form1

    Public db As New MySqlLib("http://127.0.0.1/query.php", True) ' Die IP oder Domain zur query.php die beim Download dabei ist

    Dim KeyEingabe As String ' Der Key der vom Benutzer eingegeben wird
    Dim KeyStatus As Integer ' Der Status des Key's den die Datenbank zurückwirft
    Dim ServerHWID As String ' Hier wird die HWID später erneut reingelegt

    Dim HWID As String = String.Empty ' HardwareID wird ausgelesen
    Dim mcl As New ManagementClass("win32_processor") ' HardwareID auslesen
    Dim MOBC As ManagementObjectCollection = mcl.GetInstances() 'HardwareID auslesen


    Sub checkkey()
        Dim lesen As MySqlLib.ResultCollection = db.Query("SELECT * FROM codes WHERE Code='" & KeyEingabe & "'") ' Liest alles aus der Tabelle "codes" wo der Code = Benutzereingbabe ist
        If lesen.Row.Count = 1 Then ' Wurde ein Eintrag gefunden der der Eingabe des Benutzer's übereinstimmt
            Dim count As Integer = lesen.Row.Count
            For i As Integer = 0 To count - 1
                KeyStatus = lesen.Row(i).Column("Used") ' Liest er hier die Spalte "Used" aus und legt sie in "KeyStatus"
            Next
            tryreg() ' Hier startet er den Vorgang ( TryRegister / tryreg )
        Else
            MsgBox("Der von Ihnen eingegebende Aktivierungscode existiert leider nicht!" & vbNewLine & "Sollten Sie diesen Code von uns erhalten haben , und noch nicht eingelöst haben , wenden Sie sich an [Only registered and activated users can see links. Click Here To Register...]", MsgBoxStyle.Information, "Ungütliger Aktivierungscode")
        End If
    End Sub

    Sub tryreg()
        If KeyStatus = 0 Then ' Hier checkt er ob der Key noch unbenutzt ist
            regkey() ' Wenn ja fängt er an den Key zu Registrieren.
        Else
            MsgBox("Dieser Aktivierungs-Code wurde bereits benutzt! Sollten Sie diesen Key von uns erhalten haben , und noch nicht Aktiviert haben , wenden Sie sich bitte an [Only registered and activated users can see links. Click Here To Register...]", MsgBoxStyle.Information, "Aktivierung Fehlgeschlagen")
            TextBox1.Clear()
        End If
    End Sub

    Sub regkey()
        Try
            db.Query("UPDATE codes SET Used=1 WHERE Code='" & KeyEingabe & "'") ' Hier setzt er nen Status vom eingegebenden Key auf 1 für benutzt.
            db.Query("UPDATE codes SET HWID='" & HWID & "' WHERE Code='" & KeyEingabe & "'") ' DIE HWID auf die vom Benutzer legen
            afterreg() ' Nach der Registrierung
        Catch ex As Exception
            MsgBox("Ein Unbekannter Fehler ist aufgetreten! Starten Sie das Programm neu , und versuchen Sie es in einigen Minuten erneut!", MsgBoxStyle.Information, "Aktivierung's Fehler")
        End Try
    End Sub

    Sub afterreg()
        Dim lesen As MySqlLib.ResultCollection = db.Query("SELECT * FROM codes WHERE Code='" & KeyEingabe & "'") ' Hier entnimmt er den Wert aus der Spalte Used in der tabelle codes wo der Code = die eingabe vom Benutzer ist
        If lesen.Row.Count = 1 Then ' Ebenfalls wieder ob er einen Eintrag dafür findet
            Dim Count As Integer = lesen.Row.Count
            For i As Integer = 0 To Count - 1
                KeyStatus = lesen.Row(i).Column("Used") ' Liest die Spalte Used hier aus und legt Sie erneut in KeyStatus
                ServerHWID = lesen.Row(i).Column("HWID") ' Die HWID erneut auslesen und in ServerHWID legen
            Next

            If KeyStatus = 1 And ServerHWID = HWID Then ' Sollte die Spalte Used nun = 1 sein , wurde der Key erfolgreich Registriert und ist unbrauchbar.
                MsgBox("Herzlichen Glückwunsch, " & vbNewLine & vbNewLine & "Ihre Software wurde Erfolgreich aktiviert!" & vbNewLine & "Sollte es Probleme geben wenden Sie sich an [Only registered and activated users can see links. Click Here To Register...]" & vbNewLine & vbNewLine & "Vielen Dank!", MsgBoxStyle.Information, "Aktivierung Erfolgreich")
                Me.Close()
            End If
        End If
    End Sub

    Sub checkregister()
        Dim lesen As MySqlLib.ResultCollection = db.Query("SELECT * FROM codes WHERE HWID='" & HWID & "'") ' Überprüft ob bereits jemand mit der HWID Aktiviert wurde
        If lesen.Row.Count = 1 Then ' Wenn ein Eintrag gefunden wurde
            MsgBox("Programm bereits Aktiviert!")
        Else ' Wenn kein Eintrag gefunden wird , die Aktivierung Anzeigen
            laden.Visible = False
            Panel1.Visible = True
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        KeyEingabe = TextBox1.Text ' Legt in den String KeyEingabe den Inhalt von Textbox1
        checkkey() ' Führt die Sub CheckKey aus
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each mob As ManagementObject In MOBC
            If HWID = "" Then
                HWID = mob.Properties("processorID").Value.ToString()
                Exit For
            End If
        Next
        laden.Visible = True
        Checkregister()
    End Sub
End Class
08/03/2013 19:45 tolio#2
keine mysql verbindung oder queries vom programm aus, weder direkt noch indirekt!

NUR über php oder andere serverseitige lösungen


(der typ der diese mysql lib da irgendwo mal reingestellt hat gehört echt geschlagen...)
08/03/2013 20:28 .Timoleini#3
Auch wenn das ganze mit dem "MysqlLibCript" von Dodo oder wem das auch immer ist überzogen wird?

Angeblich sollte man nur noch von seiner Applikation Zugriff darauf haben.
08/03/2013 20:32 tolio#4
ja der user ist feindesland, alles was da ist kann 100% geändert werden
folglich, wenn du nen query von da schickst kann er nach belieben geändert werden
08/03/2013 20:36 .Timoleini#5
Alles klar , wenn ich nun also Beispielsweise z.B. den Key & die HWID an mein PHP script sende , und das Script nun den Key & die HWID einträgt , sowie eine 1 zurückgibt , sollte das ganze sicherer sein?

Programm sendet Code&HWID - Php Script trägt ein und antwortet mit 1 für Success.

Sicher?
08/03/2013 20:37 tolio#6
das ist in dem sinne sicher das niemand an deine datenbank dran kommt solange du in php immer schön aufpasst
08/03/2013 20:41 .Timoleini#7
Schade , dass das mit der MysqlLib nicht funktioniert , hat viel Zeit gespaart.
Dachte mir am Anfang halt , dass das ganze etwas sicherer ist , weil die Mysql Daten zumindest nicht im Programm selbst angegeben werden sondern in einer Konfig aufm Webspace. :D