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

slocun

erro no login em ASP.NET

9 mensagens neste tópico

Boas Pessoal!!

finalmente começo verdadeiramente a trabalhar em asp.net e deparo-me com uma dificuldade que sozinho não consegui ultrapassa-la! por isso peço a voça ajuda...

a minha dificuldade é que quando eu introduzo o nome e a password para o login obtenho sempre a mesma resposta de login falhado, ou seja, redimensiona-me sempre para o 'google, quando deveria redimensionar para o 'hotmail, porque introduzi no formulario os mesmos dados que estao dentro da BD.  --> HELP <--

código:

<%@ Page Language="VB" Debug="true" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%@ import namespace="System.Data.OleDb" %>

<Script runat="Server">

  Protected Sub Bt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bt.Click
      Dim Use As String
      Dim Pass As String
          Use = txt1.Text
          Pass = Txt2.Text
      Dim conexao As OleDbConnection
      Dim Comando As OleDbCommand
      Dim Comando2 As OleDbCommand
      Dim SQLSt As String
      Dim SQLStm As String
        conexao = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & MapPath("GestrofaBD.mdb"))
        conexao.Open()
        SQLSt = "SELECT Utilizador FROM Login"
        Comando = New OleDbCommand(SQLSt, conexao)
        SQLStm = "SELECT Password FROM Login"
        Comando2 = New OleDbCommand(SQLStm, conexao)
        
        If SQLSt = Use And SQLStm = Pass Then
            Response.Redirect("http://www.hotmail.com")
        Else
            Response.Redirect("http://www.google.pt")
        End If
    End Sub
</Script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Login</title>
    <style type="text/css">
        .style1
        {
            text-align: center;
        }
    </style>
</head>
<body bgcolor="#B9DCFF" style="background-attachment: fixed">
    <form id="form1" runat="server">
    <div style="height: 479px" class="style1">
    
        <br />
        <img src="gest.bmp" style="width: 548px; height: 155px" /><br />
        <br />
        <br />
        Name<br />
        <asp:TextBox ID="txt1" runat="server"></asp:TextBox>
        <br />
        Password<br />
        <asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="Bt" runat="server" Text="Entrar" />
    
    </div>
    </form>
</body>
</html>
---------------------------

agradeço tudo o que puderem fazer por mim...

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora... estás a comparar uma palavra.. com a string toda relativa ao select. Não é isso que queres...queres comparar o que tens nas caixas de texto com um resultado desse query à BD.

Mas... vamos por partes.

Aí nesse select estás a buscar todos os utilizadores da tabela Login... o que queres provavelmente é algo assim:

SQLSt = "SELECT Utilizador,Password FROM Login WHERE Utilizador = "+ txt1.Text

Mas não basta criar a conecção.

Tens que executar aquele query... algo tipo:

SqlDataReader reader = comando.ExecuteReader()

Edit: Após este ExecuteReader() verifica se o reader.Read() tem alguma coisa... if(reader.Read())...

A partir deste momento tens no reader.GetString(0) o utilizador e no reader.GetString(1) a password (isto se estiver tudo a correr bem :))

Agora é comparar com o que tens nas caixas de texto.

Já agora na caixa de texto da password mete TextMode="password" para aparecer os *** à medida que vais introduzindo a password.

E já agora... era redireccionar que querias dizer e não redimensionar, certo?  :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

sim, era redireccionar que eu pretendia dizer...enganei-me, mas ainda bem que percebes-te :(

bem, agradeço toda a sua ajuda para este login, já consegui faze-lo, ao inicio estava um pouco confuso com a sua explicação mas ja esta feito...agora preciso de fazer a inserção d dados na BD, já preparei um código mas também dá erro, que é o seguinte:

As alterações pedidas para a tabela não foram bem sucedidas pois iriam criar valores duplicados no índice, na tecla primária ou relacionamento. Altere os dados do campo ou campos que contêm os dados duplicados, remova o índice ou volte a definir o índice para que as entradas possam ser duplicadas e tente de novo.

Linha 25:        sql = "INSERT INTO Cliente (Nome,Telefone) values ('" & nome & "', '" & telefone & "')"

Linha 26:        Comando = New OleDbCommand(sql, conexao)

Linha 27:        Comando.ExecuteNonQuery()

Linha 28:        conexao.Close()

Linha 29:    End Sub

-----

codigo completo...

<Script runat="Server">

    Protected Sub Bt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bt.Click
        Dim nome As String
        Dim telefone As Long
        nome = Txt.Text
        telefone = Txt2.Text
        Dim conexao As OleDbConnection
        Dim Comando As OleDbCommand
        Dim sql As String
        conexao = New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & MapPath("GestrofaBD.mdb"))
        conexao.Open()
        sql = "INSERT INTO Cliente (Nome,Telefone) values ('" & nome & "', '" & telefone & "')"
        Comando = New OleDbCommand(sql, conexao)
        Comando.ExecuteNonQuery()
        conexao.Close()
    End Sub
    Protected Sub Btlimpar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btlimpar.Click
        Txt.Text = ""
        Txt2.Text = ""
    End Sub
</Script>

deparei-me com este erro na segunda inserção que tentei fazer, depois da primeira ter sido bem sucedida passei a tentar outra mas deu o erro...

consegue ajudar-me?

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hello..

Ora... não sei bem como tens aí a BD organizada.. mas para dar esse erro deves ter o Nome como chave da tabela Cliente.. não? Ao se introduzir dois nomes iguais dá logo erro. Não se pode ter chaves iguais.

Nesse caso se tiveres como chave um idCliente que seja identity (auto incremento) já não te deve dar esse erro. É assim era só alterar na BD e manter esse código.

Ao introduzires por exemplo "João 2222222" e "João 1111111" na BD fica:

1 João 2222222

2 João 1111111

Mas estou só a supor que seja isso :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem eu ja consegui ultrapassar a parte do inserir, a minha chave estava em "nr_cliente" mas na insersão de dados no asp.net não tinha o campo para "nr_cliente", assim como este não era de auto incremento ele assumia sempre o valor zero, entao dava aquele erro, uma distração que eu não estava a conseguir detectar...

mas obrigado pela ajuda...

eu precisava de momento era de fazer no login uma divisao, para dar permissoes maximas a um "administrador" e permissoes limitadas aos outros.

conhece alguma maneira simples de realizar isto?

cumpz!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para isso acho que tens de ter essa informação sobre os utilizadores na base de dados..

tendo isso na bd, só tens que confirmar se o user tem permissões ao não (com um select ou guardando o tipo de user numa variavel de sessao) antes de executares o que queres que seja só feito por "admins"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como se usa o membership do .NET?

não conheço...trabalho à pouco tempo em VB.net e pouco sei disto...

cumpz

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