1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Login ASP.NET

Discussão em 'Web Development' iniciada por pascasso, 14 de Julho de 2007. (Respostas: 5; Visualizações: 2348)

  1. pascasso

    pascasso Power Member

    boas

    tenho tido alguns problemas a verificaçao do username e da pass na base de dados. o k eu fiz foi: procurei na net por exemplos de logins em asp.net, encontrei imensos variadissimos exemplos. uns eram mais complicados k os outros e havia coisa que nem fazia a minima ideia do k eram. mas encontrei uns simples que funcionavam, porke o que eu keria mesmo era o statment em sql e o "if" que determinava se o user e a pass coincidiam com algum registo na base de dados. encontrei um k me parecia simples e adaptei:

    Código:
     
     Dim myConnection1  As OleDbConnection
      Dim myCommand1     As OleDbCommand
      Dim intUserCount1  As Integer
      Dim strSQL1        As String
      strSQL1 = "SELECT COUNT(*) FROM Registos WHERE Name=name.Text AND EMail=email.Text"
      
      myConnection1 = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:/blabla/bla.mdb")
      myCommand1 = New OleDbCommand(strSQL, myConnection)
      myConnection.Open()
      intUserCount1 = myCommand.ExecuteScalar()
      myConnection.Close() 
        
                  If intUserCount1 > 0 Then
                    alerta2()
                  Else
                    
                    funcao2()
                  End If
    
    o erro k me dá é: "No value given for the required parameter" (e poe a vermelho esta linha: intUserCount1 = myCommand.ExecuteScalar() )

    o k e k ta mal?
     
  2. SoundSurfer

    SoundSurfer Power Member

    strSQL1 = "SELECT COUNT(*) FROM Registos WHERE Name=name.Text AND EMail=email.Text"

    o problema está aqui...

    para testares rapidamente, faz:

    strSQL1 = "SELECT COUNT(*) FROM Registos WHERE Name='" + name.Text + "' AND EMail='" + email.Text

    (isto é C#.. tens de adpatar ao VB)

    Se der, tens depois de modificar isot para não ser alvo de SQL injection.
     
  3. pascasso

    pascasso Power Member

    problema resolvido. obrigado :) e ja agr, como e k eu posso proteger contra sql injections?
     
  4. SoundSurfer

    SoundSurfer Power Member

    Usas SQL Parameters:

    strSQL1 = "SELECT COUNT(*) FROM Registos WHERE [email protected] AND [email protected]"

    ...
    myCommand1 = New OleDbCommand(strSQL, myConnection)
    myCommand1.Parameters.Add("@name", SqlDbType.NVarChar).Value = name.Text
    myCommand1.Parameters.Add("@email", SqlDbType.NVarChar).Value = email.Text
     
  5. pascasso

    pascasso Power Member

    brigadao pela ajuda. :D
     
  6. pascasso

    pascasso Power Member

    se eu adicionar os sql parameters volta a dar-me o erro do principio! >(
     

Partilhar esta Página