• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rjsma

[RESOLVIDO]ajuda com sistema de login

28 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer via ado.net.

Atenção q se vais guardar uma senha na base de dados convém q esteja cifrada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ja criei a base de dados

o meu problema e liga a form para criar uma conta a base de dados

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vou fazer a conexao por via ado

mas nao encontro o control ado no vb

era suposto aparecer ,certo?

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu nao tenha bem a nocao o que tenho de modificar nesse codigo

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra o código onde fazes o login. com tanto código já nem sei o que tens

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites


        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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

assim deveria funcionar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tas a usar servidor mysql?

tenta esta string de conexão

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

    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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja funciona

era eu que tinha esquecido de ligar o xampp

obrigado pela a vossa ajuda

cumps

0

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