Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

rjsma

[RESOLVIDO]ajuda com sistema de login

Mensagens Recomendadas

rjsma    2
rjsma

boas

eu tou a fazer um sistema de login no vb juntamente com o access

e queria saber na form para criar uma conta como fazo para mandar as informacoes(utilizador e senha) para a base de dados(access)

cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

boas

eu tou a fazer um sistema de login no vb juntamente com o access

e queria saber na form para criar uma conta como fazo para mandar as informacoes(utilizador e senha) para a base de dados(access)

cumps

Antes de mais tens de ter esses campos na base de dados, do género:

Tabela Login » Campos: Utilizador e Senha

Depois no Vb.Net chamas, via wizard ou código, a tabela.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bruno1234    20
bruno1234

Qual controlo?

Tens é q fazer uma class library com os métodos q necessitas para as operações na base de dados.

Para isso usas a dll com o provider para o teu motor de base de dados.

Pesquisa no google por ADO .net em VB .net para veres um exemplos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

Eu no meu programa estou a usar SQLite (que aliás, recomendo!) Para access é idêntico. Vou-te dar um exemplo com sqlite (não sei se tem algum erro mas a ideia é esta)

Primeiro passo: na base de dados, deves criar uma tabela do género:

[users]

- username

- password

Na form colocas estes objectos:

- textbox (txtUsername)

- button (txtPassword)

- button (btnOk)

- button (btnCancel)

Código:

	Imports System.Text
Imports System.Security.Cryptography
Imports System.Data.SQLite

Public userExists As Boolean

Sub BtnCreateUserClick(sender As Object, e As EventArgs)
	Select Case (String.IsNullOrEmpty(txtusername.Text.Trim()) Or String.IsNullOrEmpty(txtpassword.Text.Trim()))
		Case True
			MsgBox("All fields are required.", MsgBoxStyle.Critical, "Incomplete fields")
		Case False
			btn_Ok.Enabled = False
			btn_Exit.Enabled = False
			CheckUserData("checkUserExistance", txtusername.Text.Trim(), GenerateHash(txtpassword.Text))
			Select Case userExists
				Case = True
					MsgBox("o username escolhido já está atribuido.", MsgBoxStyle.Critical, "user inválido")
				Case = False
					AddNewUser(txtusername.Text.Trim(), GenerateHash(txtpassword.Text))
					MsgBox("User criado com sucesso.", MsgBoxStyle.Information, "user criado")
			End Select
	End Select
End Sub

Sub BtnLoginClick(sender As Object, e As EventArgs)
	Select Case (String.IsNullOrEmpty(txtusername.Text.Trim()) Or String.IsNullOrEmpty(txtpassword.Text.Trim()))
		Case True
			MsgBox("All fields are required.", MsgBoxStyle.Critical, "Incomplete fields")
		Case False
			btn_Ok.Enabled = False
			btn_Exit.Enabled = False
			CheckUserData("checkUserNameAndPassword", txtusername.Text.Trim(), GenerateHash(txtpassword.Text))
			Select Case userExists
				Case = True
					MsgBox("Login com sucesso.", MsgBoxStyle.Critical, "Login válido")
				Case = False
					MsgBox("username ou password erradas", MsgBoxStyle.Information, "Login errado")
			End Select
	End Select
End Sub

Function AddNewUser(ByVal username As String, password As String)
	Dim SQLconnect As New SQLiteConnection()
	Dim SQLcommand As SQLiteCommand
	SQLconnect.ConnectionString = "Data Source=" & appPath & databaseFile & databasePassword
	SQLconnect.Open()
	SQLcommand = SQLconnect.CreateCommand
	SQLcommand.CommandText = "INSERT INTO Users (username, password) VALUES ('" & username & "', '" & password & "')"
	SQLcommand.ExecuteNonQuery()
	SQLconnect.Close()
End Function

Function CheckUserData(ByVal Action As String, ByVal username As String, ByVal password As String) As Boolean
	userExists = False
	Dim SQLconnect As New SQLiteConnection()
	Dim SQLcommand As SQLiteCommand
	SQLconnect.ConnectionString = "Data Source=" & appPath & databaseFile & databasePassword
	SQLconnect.Open()
	SQLcommand = SQLconnect.CreateCommand
	Select Case Action
		Case = "checkUserExistance"
			SQLcommand.CommandText = "SELECT * FROM Users WHERE username = '" & username & "'"
		Case = "checkUserNameAndPassword"
			SQLcommand.CommandText = "SELECT * FROM Users WHERE username = '" & username & "' AND password = '" & password & "'"
	End Select
	Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
	While SQLreader.Read()
		userExists = True
	End While
	SQLconnect.Close()
	Return userExists
End Function

Function GenerateHash(ByVal SourceText As String) As String
	Dim Ue As New UnicodeEncoding()
	Dim ByteSourceText() As Byte = Ue.GetBytes(SourceText)
	Dim Md5 As New MD5CryptoServiceProvider()
	Dim ByteHash() As Byte = Md5.ComputeHash(ByteSourceText)
	Return Convert.ToBase64String(ByteHash)
End Function

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rjsma    2
rjsma

boas

encontrei este exemplo

Dim ws as Workspace
dim db as database
dim strConnection as string

set ws=DBEngine.Workspaces(0)
let strConnection= "ODBC;DSN=" & DatabaseName & ";UID=" & UserName 
& ";PWD=" & UserPassword
set db=ws.OpenDatabase("", False, False, strConnection)

queria saber se deve por este codigo se e no evento do botao para fazer o registo ou no

ODBC Connection ?

ja agora obrigado pela a ajuda

cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rjsma    2
rjsma

boas

tenho o seguinte codigo num botao

Dim conn As New MySqlConnection
        conn.ConnectionString = "server=127.0.0.1;user id=administrador;password=software2010;database=software"
        conn.Open()
        myCommand.Connection = conn
        myCommand.CommandText = "SELECT count(* ) N FROM `software`.`login` where utilizador = '" + UsernameTextBox.Text + "'" + " and senha = '" + PasswordTextBox.Text + "'"
        If (Convert.ToInt32(myCommand.ExecuteScalar()) = 1) Then
            Principal.Show()
            Me.Hide()
        Else
            Me.Close()
        End If
    End Sub

eu nao tou a conseguir uma parte do codigo

se o nome do user e da password estever errados fazer aparecer uma box a disser login invalido

cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

Na tua linha de código:

Else
Me.Close()
End If 

Alteras para:

Else
messagebox.show("Login Inválido")
Textbox1.Clear
Textbox2.Clear
End If 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gooden    0
Gooden

http://www.connectionstrings.com/

este site ajuda-vos com as strings de conexão. Quanto ao código de conexão tens muitos na net.

o que eu uso com sql é este:

cnn = New SqlConnection("StringDe Conecção no site.")
cnn.open
Dim ds As New DataSet
Dim da As New SqlDataAdapter("select * from login where user=1 and pass=2", cnn)
da.Fill(ds)
If ds.Tables(0).Rows.Count > 0 Then
        
else
msgbox("invalido")
end if

quanto ao login lembra-te de encriptares a pass com MD5 na base de dados. Segurança sempre em primeiro não é só em relações tá? XD

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rjsma    2
rjsma

nao queria alterar todo o meu codigo

o meu programa ja ta a funcionar mas so queria que aparecesse uma box a disser login invalido se eu nao introduzir as informacoes correctas

cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rjsma    2
rjsma
Dim conn As New MySqlConnection
        conn.ConnectionString = "server=127.0.0.1;user id=administrador;password=software2010;database=software"
        conn.Open()
        myCommand.Connection = conn
        myCommand.CommandText = "SELECT count(* ) N FROM `software`.`login` where utilizador = '" + UsernameTextBox.Text + "'" + " and senha = '" + PasswordTextBox.Text + "'"
        If (Convert.ToInt32(myCommand.ExecuteScalar()) = 1) Then
            Principal.Show()
            Me.Hide()
        Else
            Me.Close()
        End If
    End Sub

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
apocsantos    209
apocsantos


        Dim conn As New MySqlConnection
        conn.ConnectionString = "server=127.0.0.1;user id=administrador;password=software2010;database=software"
        conn.Open()
        myCommand.Connection = conn
        myCommand.CommandText = "SELECT count(* ) N FROM `software`.`login` where utilizador = '" + UsernameTextBox.Text + "'" + " and senha = '" + PasswordTextBox.Text + "'"
        If (Convert.ToInt32(myCommand.ExecuteScalar()) = 1) Then
            Principal.Show()
            conn.close()        
    Me.Hide()
        Else
          messagebox.show("Login Inválido")            
          conn.close ()
          Me.Close()

        End If
   
End Sub

Aconselhava-te a encriptar as passes a serem armazenadas na tabela, pelo menos em MD5, mas se quizeres usa Triple-DES. Não precisas de fazer grandes alterações no codigo, basta usares uma função decript para desencriptar os valores de login e pass que vêem encriptados da tabela antes de executares a condição IF.

Não te esqueças que para fazer isto quando criares um novo user tens de encriptar da mesma forma o user e pass com uma função "encript". Se precisares posso deixar-te exemplos de codigo para Triple-DES.

Uma coisa que reparei foi que não fechavas a connecção após terminar a form. Existe alguma razão especial para isto??

Cumprimentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gooden    0
Gooden

        If (Convert.ToInt32(myCommand.ExecuteScalar()) = 1) Then
            Principal.Show()
            Me.Hide()
        Else
            Msgbox("Login Inválido")
        End If

assim deveria funcionar

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gooden    0
Gooden

Tas a usar servidor mysql?

tenta esta string de conexão

conn.ConnectionString = "Server=localhost;Database=software;Uid=administrador;Pwd=software2010;"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rjsma    2
rjsma

sim tou a usar o servidor mysql

o programa funciona o problema e que se nao introduzir as informacoes correctas do login o programa para e aparece aquele erro da imagem

cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
apocsantos    209
apocsantos

    Dim conn As New MySqlConnection
    Dim myCommand As New MySqlCommand

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Dim conn As New MySqlConnection
        conn.ConnectionString = "server=127.0.0.1;user id=administrador;password=software2010;database=software"
        conn.Open()
        myCommand.Connection = conn
        myCommand.CommandText = "SELECT count(* ) N FROM `software`.`login` where utilizador = '" + UsernameTextBox.Text + "'" + " and password = '" + PasswordTextBox.Text + "'"
        If (Convert.ToInt32(myCommand.ExecuteScalar()) = 1) Then
            Principal.Show()
            Me.Hide()
        Else
           Msgbox("Login Inválido")    
           Me.Close()
        End If
    End Sub

Qual o connector que estás a usar?? O dot net connector 5.2?? Exprimenta este codigo, deve funcionar perfeitamente para o botão de login. e deve devolver-te a textbox caso tenhas a login errada.

Não te esqueças que deves usar um user com permissões de root na connection string

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade