Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wilnet

Condicionar IF - dando erro ou...

Recommended Posts

Olá profissionais contribuintes, estou tendo um problema que para mim está dificil.

Tenho uma página de login_ok.asp onde carrega vários link's. Só que, se o usuario não for um Cliente aprovado, não terá acesso a proxima página.

 

Vejam o código que estou usando:

 

<%

dim aprova_clientes

set aprova_clientes = lojaDB.Execute("SELECT * FROM clientes WHERE cad_ok = 'N'")

If aprova_clientes("cad_ok") ="N" Then

Response.Write "CADASTRAR / ALTERAR EMPRESA (Você ainda não é Cliente)"

Else

%>

<script>window.location="./empr_cad_alt.asp?acao=editar"</script>

<%

End If

%>

 

Onde "cad_ok" é um campo do meu bd que está em texto e grava 'S' ou 'N'

 

'S' è um Cliente aprovado.

'N' não é aprovado.

 

O que está ocorrendo?

 

Ele não faz esta filtragem, ele ignora o 'S' e 'N' e mostra tudo igual, como está o codigo acima ele mostra todos sendo cliente ou não, e se eu mudar no 'Select para 'S' ele naõ mostra nada tb para todos.

 

Podem me ajudar por favor, muito obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola!

 

No seu banco este campo esta no formato sim/não?

 

se estiver use um if mais ou menos assim:

 

IF rs("Sua_Coluna") = True Then	Response.Redirect("PaginaAprovado.asp)Elseresponse.redirect("PaginaNaoAprovado.asp")

Falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde você especifica o cliente nessa SQL?

 

Em seu script de login você grava uma session contendo o ID de seu usuário e ésó testar se essa session está preenchida ou não. Se não for apenas isso dê mais detalhes por favor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente mais ou menos assim:

 

'Resgata as informações do form	vlogin = Request.Form("login")	vsenha = Request.Form("senha")			'Sql						Set rs = con.Execute("SELECT * FROM TABELA WHERE login='"& vlogin &"' AND senha = '"& vsenha&"'")		'condição	IF rs("Sua_Coluna") = True Then	Response.Redirect("PaginaAprovado.asp")	Else	response.redirect("PaginaNaoAprovado.asp")

Falta a sua conecxao com o BD....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Shumi, como mencionei, meu campo está no formato texto, ele grava 'S' ou 'N', tem como me passar nesta condição? Obrigado.

 

Olá Salgado, vou verificar seu post, e tentar te responder melhor também, achou que está pg não está recuperando a session dele, sei lá, logo volto com sua pergunta ok? Obrigado tb.

 

Se mais alguém puder me ajudar, agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai cara nunca fiz, mesmo pq sou novo, mas tenta algo assim:

 

IF rs("Sua_Coluna") = S Then		Response.Redirect("PaginaAprovado.asp")	Else	response.redirect("PaginaNaoAprovado.asp")

ou assim

 

IF rs("Sua_Coluna") = "S" Then		Response.Redirect("PaginaAprovado.asp")	Else	response.redirect("PaginaNaoAprovado.asp")

sei la...

 

testa ai!

 

Falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shumi, não deu certo tb, ficou da mesma forma em que está o meu, ou carrega todos Aprovados ou todos não aprovados.

 

Olá Salgado, não entendi bem sua colocação, mas acho que deve ser isso que você falou: eu tenho a pg que verifica se o ´login está correto ou não e me redireciona (OK), o codigo é este abaixo:

 

<% Dim acao,usuario,senha,nome,id_usuario,chk_usuario,temp,cliente_n,car_prod_idIf Not IsEmpty(Request.Form("acao")) Then 	acao = Request.Form("acao")End IfIf Not IsEmpty(Request.QueryString("acao")) Then 	acao = Request.QueryString("acao")End Ifusuario = Request.Form("usuario")senha = Request.Form("senha")				'Desconecta a contaIf acao="logout" Then	Session.Abandon	%>	<script>window.location="./index.asp"</script>	<%End If'Conecta a contaIf IsEmpty(Session("usuario")) AND acao="login" Then	set chk_usuario = lojaDB.Execute("SELECT * FROM clientes WHERE usuario='"& replace(usuario,"'","''") &"' AND senha='"& replace(senha,"'","''") & "'")	If chk_usuario.EOF Then 		%>		<tr width=100%><td width=100%>	  <div align="center"><font color=red>Login Inválido</font></div>	</td></tr>		<%		acao = ""		usuario = ""		senha = ""	Else		temp = 0		Dim cl_id		While not chk_usuario.EOF			temp = temp + 1				cl_id = chk_usuario("id")				  chk_usuario.MoveNext			Wend		If temp=1 Then			'Login OK			chk_usuario.MoveFirst			Session("usuario_id") = chk_usuario("id")			Session("usuario") = chk_usuario("usuario")			Session("cliente_n") = chk_usuario("cliente_n")			If Not IsEmpty(Request.QueryString("pagina")) Then			%>				<script>window.location="./empr_login_ok.asp?pagina=<%=Request.QueryString("pagina")%>"</script>			<% Else %>				<script>window.location="./empr_login_ok.asp"</script>			<%			End If		'Mais de um usuário com o mesmo nome		Else 			%>
Se aprovado, carrega uma outra pg, contendo os link's que falei, para que ele possa fazer outros cadastros, só que ele precisa ser cliente aprovado, do contrario carrega apenas um "Response.Write" informando que ele não é cadastrado.

 

Informações do meu bd e do codigo para filtrar se é ou não está no primeiro post.

 

Obrigado pessoal .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oooo pessoal, será que ninguem pode me ajudar, estou empacado neste código a dias, tento de um jeito e de outro ja procurei algo parecido no forum e nada, me ajudem galera....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara a melhor solução é você mudar seu DB para que fique a opção SIM/NÃO que ai com o primeiro script que te passei ele vai funcionar perfeitamente! eu uso esse script em um sistema meu e ele funciona que é uma beleza!Falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shumi,

 

Fiz como você falou, mudei meu bd para sim/não e inseri seu codigo na pg ficou assim:

 

<!--#include file="con.inc"--><%dim vusuario, vsenha,aprova_clientes'Resgata as informações do form	vusuario = Request.Form("usuario")	vsenha = Request.Form("senha")			'Sql						Set aprova_clientes = con.Execute("SELECT * FROM clientes WHERE usuario='"& vusuario &"' AND senha = '"& vsenha&"'")		'condição	IF aprova_clientes("cad_ok") = True Then	Response.Redirect("empr_cad_alt.asp")	Else	response.redirect("falha.asp")	End if%>
Só que não funfou Shumi, deu este erro:

 

erro '80020009'

Exceção.

 

./aprova_cliente.asp, line 26

 

A linha 26 é esta:

 

[/code] IF aprova_clientes("cad_ok") = True Then[/code]

 

Alguem pode me dar um help, grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Volte da forma que estava. No seu script que autentica o usuário e grava as sessions com o nome o ID e outras coisas acrescente uma session gravando o campo se é usuário aprovado ou não. Àpartir daí é só fazer o IF comparando com a session e não fazendo aquele SELECT no BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Salgado pela orientação, mas onde eu teria que colocar essa Session e como ela seria, não entendo muita coisa sobre session.

 

Seria nesta parte?

 

'Conecta a contaIf IsEmpty(Session("usuario")) AND acao="login" Then	set chk_usuario = lojaDB.Execute("SELECT * FROM clientes WHERE usuario='"& replace(usuario,"'","''") &"' AND senha='"& replace(senha,"'","''") & "'")
se for sim, como eu criaria esta nova session"cad_ok" e onde ela ficaria ?

 

Se não, pode me dar um exemplo mais para leigo por favor, grato.

 

P.S: Já voltei meu bd como estava antes então, com o campo cad_ok no formato texto.

 

Obrigado amigos e qualquer ajuda será bem aceita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No seu Script de login:

<%
Dim acao,usuario,senha,nome,id_usuario,chk_usuario,temp,cliente_n,car_prod_id
If Not IsEmpty(Request.Form("acao")) Then
acao = Request.Form("acao")
End If
If Not IsEmpty(Request.QueryString("acao")) Then
acao = Request.QueryString("acao")
End If
usuario = Request.Form("usuario")
senha = Request.Form("senha")

'Desconecta a conta
If acao="logout" Then
Session.Abandon
%>
<script>window.location="./index.asp"</script>
<%
End If

'Conecta a conta
If IsEmpty(Session("usuario")) AND acao="login" Then
set chk_usuario = lojaDB.Execute("SELECT * FROM clientes WHERE usuario='"& replace(usuario,"'","''") &"' AND senha='"& replace(senha,"'","''") & "'")
If chk_usuario.EOF Then
	%>
	<tr width=100%><td width=100%>
  <div align="center"><font color=red>Login Inválido</font></div>
</td></tr>
	<%
	acao = ""
	usuario = ""
	senha = ""
Else
	temp = 0
	Dim cl_id
	While not chk_usuario.EOF
		temp = temp + 1
			cl_id = chk_usuario("id")
			  chk_usuario.MoveNext	
	Wend
	If temp=1 Then
		'Login OK
		chk_usuario.MoveFirst
		Session("usuario_id") = chk_usuario("id")
		Session("usuario") = chk_usuario("usuario")
		Session("cliente_n") = chk_usuario("cliente_n")
		Session("Cad_Ok") = chk_usuario("cad_ok") 'ACRESCENTEI ESSA LINHA
		If Not IsEmpty(Request.QueryString("pagina")) Then
		%>
			<script>window.location="./empr_login_ok.asp?pagina=<%=Request.QueryString("pagina")%>"</script>
		<% Else %>
			<script>window.location="./empr_login_ok.asp"</script>
		<%
		End If
	'Mais de um usuário com o mesmo nome
	Else
		%>

E para as partes que quer testar você faz algo +/- assim:

<%
If Session("cad_ok") ="N" Then
Response.Write "CADASTRAR / ALTERAR EMPRESA (Você ainda não é Cliente)"
Else
%>
<script>window.location="./empr_cad_alt.asp?acao=editar"</script>
<%
End If
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um bommmmmmmmm dia Meu amigo Salgado, esta foi a melhor noticia que recebi agora cedo quando vi seu post e tentei executa-lo, sabe o que aconteceu? FUNCIONOU huaaal agora deu certo, muito obrigado mesmo.

 

Ontem eu tentei colocar a session na pg de login assim como você fez e ñ funcionou, pq na pg que faz a filtragem eu estava com a mesma variavel de antes, vi que você mudou e chamou a "session" ve por causa um comando nada funciona direito.

 

Muito obrigado mesmo, não só a você que me ajudou diretamente, mas tb a todos os colaboradores do Imasters que estão sempre atentos a esta troca de informações e ajundando na formação de novos aprendizes, e tb mais ainda, a equipe do Imasters pelo sussesso deste forum e do site.

 

Grato,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.