ResultSetrs=at.executeQuery("SELECTN,PFROMtabelaWHEREN='"+U+"'ANDP='"+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("Insiraosdados");%><atarget="principal"href="inserir_dados.html">Aqui</a><br><%out.println("Altere os dados");%><atarget="principal"href="Alterar_dados.html">Aqui</a><br><br><br><ahref="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><ahref="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?
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
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
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
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?
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
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?
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”