Vb+mssql+md5

Тема в разделе "Visual Basic", создана пользователем Rastamans, 13 авг 2011.

  1. Rastamans

    Rastamans Гость

    Добрый день.
    Столкнулся с проблемой так как в программирование не так уж давно только учуся. Делаю лаунчер для онлайн игры для собственного сервера, в нем предусмотрена регистрация аккаунта БД игрового сервера основана на Mssql
    Передомной встала задача:

    1) Добавление новой строки в БД (То есть регистрацию аккаунта) ==== с этим я справился:)
    2) Передача пароля идёт в виде: ключ+пароль и все это перекодируется в md5
    Пример: 2011admin=13b5247e3398350918cb622a3ec19e9=>в таком виде он должен поступать в БД
    3) Проверка логина в БД если есть такой логин то выдавать соответствующие сообщение.

    Покопав интернет не нашел ответа на последние 2 вопроса, если не сложно помогите новичку очень нужно пожалуйста
    Вот код передачи данных в MSSQL

    Код (LotusScript):
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim name, des As String
    Dim pass As String
    name = "'" & Me.TextBox2.Text & "'"
    pass = "'" & Me.TextBox3.Text & "'"
    Dim cmd As New SqlCommand("INSERT INTO Accounts VALUES (" & name & "," & pass & ", 0 , 0 , 18 , 1 , 1 , 1 , 0 , null , 1 , null , null , null )", conn)
    conn.Open()
    cmd.ExecuteNonQuery()
    conn.Close()
    MsgBox("Вы зарегестрированны")
    End Sub
     
  2. Rastamans

    Rastamans Гость

    Вообщем с проблемой передачи пароля в зашифрованно виде разобрался сам
    вот код

    Код (LotusScript):
    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.Security.Cryptography
    Imports System.Text
    Public Class Form1
    Private Function StringtoMD5(ByVal Content As String) As String
    Dim M5 As New System.Security.Cryptography.MD5CryptoServiceProvider
    Dim ByteString() As Byte = System.Text.Encoding.ASCII.GetBytes(Content)
    ByteString = M5.ComputeHash(ByteString)
    Dim FinalString As String = Nothing
    For Each bt As Byte In ByteString
    FinalString &= bt.ToString("x2")
    Next
    Return FinalString
    End Function
    Dim conn As New SqlConnection("Data Source=SAMLAB;Initial Catalog=Auth;User ID=sa")
    Sub seleccionar()
    Dim adp As New SqlDataAdapter("SELECT * FROM Accounts", conn)
    Dim ds As New DataSet()
    adp.Fill(ds, "login_name")
    Me.DataGridView1.DataSource = ds.Tables(0)
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.seleccionar()

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Me.seleccionar()
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    Dim adp As New SqlDataAdapter("SELECT * FROM Accounts WHERE login_name LIKE '%" + Me.TextBox1.Text + "%'", conn)
    Dim ds As New DataSet()
    adp.Fill(ds, "login_name")
    Me.DataGridView1.DataSource = ds.Tables(0)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox3.Text = StringtoMD5("2011" + TextBox3.Text)
    Dim name, des As String
    Dim pass As String
    name = "'" & Me.TextBox2.Text & "'"
    pass = "'" & Me.TextBox3.Text & "'"
    Dim cmd As New SqlCommand("INSERT INTO Accounts VALUES (" & name & "," & pass & ", 0 , 0 , 18 , 1 , 1 , 1 , 0 , null , 1 , null , null , null )", conn)
    conn.Open()
    cmd.ExecuteNonQuery()
    conn.Close()
    MsgBox("Вы зарегестрированны")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Me.Close()
    End Sub
    End Class

    1)Теперь надо устроить проверку с БД на присутствие такого логина в бд если он есть то выдать сообщение если нет то зарегистрировать.
    2) проверка вводимых данных в TextBox запретить символы некоторые и пустые поля
    Если есть у кого ни будь такая информация помогите пожалуйста по возможности ищу сам но хотелось бы ускорить процесс
     
  3. Rastamans

    Rastamans Гость

    Не у кого идей нет??? А жаль очень надо :)
     
  4. Rastamans

    Rastamans Гость

    Вообщем поборол я русские буквы чтоб не вводилися вот код:

    Код (LotusScript):
     Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
    If (Microsoft.VisualBasic.Asc(e.KeyChar) < 48) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) > 122) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 32) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 91) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 58) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 59) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 60) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 61) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 62) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 63) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 64) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 91) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 92) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 93) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 94) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 95) _
    Or (Microsoft.VisualBasic.Asc(e.KeyChar) = 96) Then
    If (Microsoft.VisualBasic.Asc(e.KeyChar) <> 32) Then
    e.Handled = True
    End If
    End If
    If (Microsoft.VisualBasic.Asc(e.KeyChar) = 8) Then
    e.Handled = False
    End If
    End Sub

    Осталося последня проблема с читыванием данных и их проверкой дайте подсказку желательно на примере
    ЗЫ: Такое ощущение я тут один =)
     
  5. BStudio

    BStudio Гость

    хахахах forever alone :RTFM:

    просто, наверное, никто не соображает, а для тех, кто соображает, это слишком просто XD
    я к первым отношусь =D
     

Поделиться этой страницей