[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
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?
[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 [/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?
[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 [/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? [/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(tipoUsuario == ){
//MOSTRA O TEXTO DE INSERIR / ALTERAR DADOS
}else if(tipoUsuario == <USUARIO_COMUM>) {
// BEM-VINDO, VÁ FAZER COMPRAS!
}
}else{
// USUARIO NAO EXISTE!
}[/code]
obs.:
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’
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…
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
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(tipoUsuario == ){
//MOSTRA O TEXTO DE INSERIR / ALTERAR DADOS
}else if(tipoUsuario == <USUARIO_COMUM>) {
// BEM-VINDO, VÁ FAZER COMPRAS!
}
}else{
// USUARIO NAO EXISTE!
}[/code]
obs.:
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’
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…
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
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”