Porque não aparece?

11 respostas
Sonkinha
ResultSet rs = at.executeQuery("SELECT N,P FROM tabela WHERE N= '" +U+ "' AND P = '" +Pa+ "'");
while(rs.next()){
UMysql = rs.getString("N");
PMysql = rs.getString("P");}

if (prio==0){
     if ((U.equals("Administrador")) && P.equals(PMysql) && Cont == 0){
        Cont++;
        L=1;
        out.println("Insira os dados");%><a target="principal" href="inserir_dados.html">Aqui</a><br><%
        out.println("Altere os dados");%><a target="principal" href="Alterar_dados.html">Aqui</a><br><br><br>
        <a href="principal.jsp">Logout</a><%
        Cont = 0 ;}

     if ((U.equals(UMysql)) && (P.equals(PMysql)) && (login==0)){
        login=1;
        out.print("Bem vindo ");
        out.println("<br>");
        out.println("Agora já pode efectuar compras");%>
        <br><br><br><a href="principal.jsp">Logout</a><%
        Cont = 0 ;}}

else {
        prio=1;
        }

        if (prio==1){
            out.println("Password errada ou conta inexistente");}

Porque não aparece a mensagem "Password errada ou conta inexistente" quando introduzo os dados errados?
Não dá erro nenhum no netbeans, mas também nao aparece anda...
E já agora o meu login ou o logout não estão correctos. Quando mudo de pagina ele faz logout automaticamente.
Sugestoes?

11 Respostas

alucardeck

provavelmente pq se o usuario/senha estiver errado…

o programa nunca vai entrar no seu WHILE…
(rs.next() retorna false quando nao houver mais resultados)

e acredito que a sua variavel prio está setada com 0 por default…

e para aparecer a mensagem desejada, a prio deveria ser 1…

apesar do processo estar meio sem nexo,
vc pode tentar resolver isso setando prio =1, antes de fazer o select… acho q arrumaria :wink:

jaboot

Dá uma debugada nesse código aí, deve haver condições que não estão sendo satisfeitas para ele entrar aonde você quer.

Sonkinha

alucardeck:
provavelmente pq se o usuario/senha estiver errado…

o programa nunca vai entrar no seu WHILE…
(rs.next() retorna false quando nao houver mais resultados)

e acredito que a sua variavel prio está setada com 0 por default…

e para aparecer a mensagem desejada, a prio deveria ser 1…

apesar do processo estar meio sem nexo,
vc pode tentar resolver isso setando prio =1, antes de fazer o select… acho q arrumaria :wink:

Se eu setar prio=1 antes do select ele vai dizer password errada quando introduzir os dados corretamente

Sonkinha

Já tentei mas naum resultou. Problema de código mesmo.

alucardeck

Sonkinha:
alucardeck:
provavelmente pq se o usuario/senha estiver errado…

o programa nunca vai entrar no seu WHILE…
(rs.next() retorna false quando nao houver mais resultados)

e acredito que a sua variavel prio está setada com 0 por default…

e para aparecer a mensagem desejada, a prio deveria ser 1…

apesar do processo estar meio sem nexo,
vc pode tentar resolver isso setando prio =1, antes de fazer o select… acho q arrumaria :wink:

Se eu setar prio=1 antes do select ele vai dizer password errada quando introduzir os dados corretamente

claro, ai vc corrige o if(prio = 1) dentro do codigo neh =P

na verdade não deveria nem ter um WHILE… e sim apenas um IF(rs.hasNext())…
já que provavelmente vc pois o seu campo ‘usuario’ na tabela como unique key… não pois? :slight_smile:

Sonkinha

alucardeck:
Sonkinha:
alucardeck:
provavelmente pq se o usuario/senha estiver errado…

o programa nunca vai entrar no seu WHILE…
(rs.next() retorna false quando nao houver mais resultados)

e acredito que a sua variavel prio está setada com 0 por default…

e para aparecer a mensagem desejada, a prio deveria ser 1…

apesar do processo estar meio sem nexo,
vc pode tentar resolver isso setando prio =1, antes de fazer o select… acho q arrumaria :wink:

Se eu setar prio=1 antes do select ele vai dizer password errada quando introduzir os dados corretamente

claro, ai vc corrige o if(prio = 1) dentro do codigo neh =P

na verdade não deveria nem ter um WHILE… e sim apenas um IF(rs.hasNext())…
já que provavelmente vc pois o seu campo ‘usuario’ na tabela como unique key… não pois? :slight_smile:

Cara tentei fazer isso do if(prio==1) mas ai se aparecer mensagem de erro ele mostra. Mas também mostra se introduzir os dados corretos.
Não cara. Na tabela do mysql o ID está em unique key e nao o usuario.

alucardeck
Sonkinha:
Cara tentei fazer isso do if(prio==1) mas ai se aparecer mensagem de erro ele mostra. Mas também mostra se introduzir os dados corretos. Não cara. Na tabela do mysql o ID está em unique key e nao o usuario.

ok.. vamos rever esse codigo..

ResultSet rs = at.executeQuery("SELECT N,P,TIPO_USUARIO FROM tabela WHERE N= '" +U+ "' AND P = '" +Pa+ "'");

if(rs.next()){
   UMysql = rs.getString("N");
   PMysql = rs.getString("P");}
   int tipoUsuario = rs.getInteger("TIPO_USUARIO");

   if(tipoUsuario == <ADMIN> ){
      //MOSTRA O TEXTO DE INSERIR / ALTERAR DADOS
   }else if(tipoUsuario == <USUARIO_COMUM>) {
      // BEM-VINDO, VÁ FAZER COMPRAS!
   }

}else{
// USUARIO NAO EXISTE!
}

obs.:
1) dizer que se um usuario é administrador ou não, deveria estar relacionado a uma coluna de tipo de usuario, pois vc futuramente pode controlar permissões pelo tipo da pessoa que esta logando, e não por um hardcoded forçando o usuario ter o nome de 'administrador'
2) o campo ID é uma primary key, logo será uma uniquekey... mas alem disso o campo usuario tambem deveria ser unique key, ou vai ser possivel registrar 2 pessoas com o mesmo usuario, a não ser que vc valide isso na hora de registrar, mas de qualquer forma é sempre bom deixar isso explicito no banco de dados..
3) se vc não está validando a existencia de usuarios com nomes repetidos, qualquer pessoa que se cadastrar com o nome de 'administrador' vai praticamente hackear o seu sistema =P
4) vc esta montando um sistema em scriptlet???? se não for para fins de estudo, pode parar por ai =]

Sonkinha
alucardeck:
Sonkinha:
Cara tentei fazer isso do if(prio==1) mas ai se aparecer mensagem de erro ele mostra. Mas também mostra se introduzir os dados corretos. Não cara. Na tabela do mysql o ID está em unique key e nao o usuario.

ok.. vamos rever esse codigo..

ResultSet rs = at.executeQuery("SELECT N,P,TIPO_USUARIO FROM tabela WHERE N= '" +U+ "' AND P = '" +Pa+ "'");

if(rs.next()){
   UMysql = rs.getString("N");
   PMysql = rs.getString("P");}
   int tipoUsuario = rs.getInteger("TIPO_USUARIO");

   if(tipoUsuario == <ADMIN> ){
      //MOSTRA O TEXTO DE INSERIR / ALTERAR DADOS
   }else if(tipoUsuario == <USUARIO_COMUM>) {
      // BEM-VINDO, VÁ FAZER COMPRAS!
   }

}else{
// USUARIO NAO EXISTE!
}

obs.:
1) dizer que se um usuario é administrador ou não, deveria estar relacionado a uma coluna de tipo de usuario, pois vc futuramente pode controlar permissões pelo tipo da pessoa que esta logando, e não por um hardcoded forçando o usuario ter o nome de 'administrador'
2) o campo ID é uma primary key, logo será uma uniquekey... mas alem disso o campo usuario tambem deveria ser unique key, ou vai ser possivel registrar 2 pessoas com o mesmo usuario, a não ser que vc valide isso na hora de registrar, mas de qualquer forma é sempre bom deixar isso explicito no banco de dados..
3) se vc não está validando a existencia de usuarios com nomes repetidos, qualquer pessoa que se cadastrar com o nome de 'administrador' vai praticamente hackear o seu sistema =P
4) vc esta montando um sistema em scriptlet???? se não for para fins de estudo, pode parar por ai =]


Compreendo cara. Meu código está uma bagunça! E sim cara é para fins de estudo, mas mesmo assim é um projecto sério! Não é nenhuma brincadeira.
Vou fazer várias alterações no meu código. Para já vou eliminar o ID do codigo mysql. Mesmo melhor ter o "usuário" como primary key.
Esse campo "Tipo_Usuario" o que e? Já vi esse campo em codigo de meus colegas mas nunca percebi pra que serve? Sei que é numero inteiro mas como posso fazer isso a meu favor?

alucardeck

Sonkinha:
Compreendo cara. Meu código está uma bagunça! E sim cara é para fins de estudo, mas mesmo assim é um projecto sério! Não é nenhuma brincadeira.
Vou fazer várias alterações no meu código. Para já vou eliminar o ID do codigo mysql. Mesmo melhor ter o “usuário” como primary key.
Esse campo “Tipo_Usuario” o que e? Já vi esse campo em codigo de meus colegas mas nunca percebi pra que serve? Sei que é numero inteiro mas como posso fazer isso a meu favor?

Opa, perai…
nao tira o ID como primary key não… por questões de performance…
o seu banco vai trabalhar muito mais rapido se a PK for uma integer, doq um varchar…

vc pode fazer um relacionamento… o tipoUsuarioId da tabela de usuarios… ser uma FK…
ligando com a PK de uma tabela chamada Tipo_Usuario… onde lah vc poem um campo de descrição que relaciona com um ENUM do seu sistema…
e esse ENUM de tipoUsuario seria um atributo do seu UsuarioVO.

é só uma sugestão, existem varios meios de aplicar isso no sistema…

de qualquer forma… nenhum projeto serio deveria ser feito em Scriptlet (nunca!)…
de uma estudada em jsp/struts/spring ou qualquer outra combinação q vc ache mais facil…
existem mtos livros para baixar por ai, e artigos sobre eles aqui no GUJ…
comece o seu primeiro sistema com o pé direito ^^

Lucas_Abbatepaolo

So uma dica…usa um preparedStatement ai…pq do jeito q da…da pra quebrar esse login ai com um sqlInject facil facil…

esse campo de tipo_usuario provavelmente é pra controlar os acesso…
por exemplo
1 = administrador
2 = supervisor

e assim por diante…dai quando o usaurio de tipo 1 logar no sistema por ele ser adm ele tem acesso total…
vc deve verificar se o seu sistema tem esse requisito…

como ja te falaram ai da uma estudada nos frameworks para desenvolvimento web…(jsf, strus, spring) e ve qual facilita a sua vida…pra vc naum ter q reinventar a roda…

da uma olhada tambem em padroes de projetos (o 3 camadas é uma boa) e tambem em padroes que vc pode usar em cada camada…rs

ta vendo so…uma coisa que parece simples vai crescendo de uma forma assustadora…rs

Sonkinha

alucardeck:
Sonkinha:
Compreendo cara. Meu código está uma bagunça! E sim cara é para fins de estudo, mas mesmo assim é um projecto sério! Não é nenhuma brincadeira.
Vou fazer várias alterações no meu código. Para já vou eliminar o ID do codigo mysql. Mesmo melhor ter o “usuário” como primary key.
Esse campo “Tipo_Usuario” o que e? Já vi esse campo em codigo de meus colegas mas nunca percebi pra que serve? Sei que é numero inteiro mas como posso fazer isso a meu favor?

Opa, perai…
nao tira o ID como primary key não… por questões de performance…
o seu banco vai trabalhar muito mais rapido se a PK for uma integer, doq um varchar…

vc pode fazer um relacionamento… o tipoUsuarioId da tabela de usuarios… ser uma FK…
ligando com a PK de uma tabela chamada Tipo_Usuario… onde lah vc poem um campo de descrição que relaciona com um ENUM do seu sistema…
e esse ENUM de tipoUsuario seria um atributo do seu UsuarioVO.

é só uma sugestão, existem varios meios de aplicar isso no sistema…

de qualquer forma… nenhum projeto serio deveria ser feito em Scriptlet (nunca!)…
de uma estudada em jsp/struts/spring ou qualquer outra combinação q vc ache mais facil…
existem mtos livros para baixar por ai, e artigos sobre eles aqui no GUJ…
comece o seu primeiro sistema com o pé direito ^^

Cara o problema está resolvido.
Só tenho de agradecer a você. Em vez de usar o “Tipo_Usuario” eu usei o própiro “ID” :smiley:

Criado 1 de abril de 2011
Ultima resposta 4 de abr. de 2011
Respostas 11
Participantes 4