Porque não aparece?

[code]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”);%>Aqui
<%
out.println(“Altere os dados”);%>Aqui



Logout<%
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");}[/code]

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?

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:

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

[quote=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: [/quote]

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

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

[quote=Sonkinha][quote=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: [/quote]

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

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:

[quote=alucardeck][quote=Sonkinha][quote=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: [/quote]

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

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: [/quote]

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.

[quote=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.[/quote]

ok… vamos rever esse codigo…

[code]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 == ){
//MOSTRA O TEXTO DE INSERIR / ALTERAR DADOS
}else if(tipoUsuario == <USUARIO_COMUM>) {
// BEM-VINDO, VÁ FAZER COMPRAS!
}

}else{
// USUARIO NAO EXISTE!
}[/code]

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 =]

[quote=alucardeck][quote=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.[/quote]

ok… vamos rever esse codigo…

[code]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 == ){
//MOSTRA O TEXTO DE INSERIR / ALTERAR DADOS
}else if(tipoUsuario == <USUARIO_COMUM>) {
// BEM-VINDO, VÁ FAZER COMPRAS!
}

}else{
// USUARIO NAO EXISTE!
}[/code]

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 =]
    [/quote]
    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?

[quote=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?[/quote]

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 ^^

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

[quote=alucardeck][quote=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?[/quote]

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 ^^[/quote]

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: