Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Sesison não fecha a seção corretamente

Recommended Posts

Olá pessoal

 

Amigos tenho o seguinte código

 

<%
if session ("associado") = "ok" then
response.Write("OK 1")
else
		session.Abandon()
		associadoCad = request.QueryString("id")
		Set RS = Server.CreateObject("adodb.recordset")
		SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
		RS.Open SQL,Conn,3,3
			if rs.eof then
				session.Abandon
			else
				session ("associado") = "ok"
				associado = session ("associado")
				session ("nome") = Rs("nome")
				session ("login") = Rs("inscricao")
				session("IDAssociado") = Rs("IDASSOCIADO")
			end if
end if	

if session("associado") = session("nome") then
else
		session.Abandon()
		associadoCad = request.QueryString("id")
		Set RS = Server.CreateObject("adodb.recordset")
		SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
		RS.Open SQL,Conn,3,3
			if rs.eof then
				session.Abandon
			else
				session ("associado") = "ok"
				associado = session ("associado")
				session ("nome") = Rs("nome")
				session ("login") = Rs("inscricao")
				session("IDAssociado") = Rs("IDASSOCIADO")
			end if
end if	

%>

e no topo do site faço o include para o arquivo que tem este código

 

<!--#include file="funcao_verifica_associado.asp"-->

Bom o que estou tentando fazer é o seguinte,

Quando o usuário entra no site com o endereço www.conquistta.com.br/?id=seulogin o código (que dividi em duas partes) deve pegar verificar se a session já não esta ativa, caso esteja passa para a segunda verificação que ver se o nome no associado é o mesmo que estas endo digitado na URL caso seja ele imprime na tela o nome do usuáiro, cao contrário ele da a informação que não foi encotrado o usuário, isto é feito com o código

 

<%
if session("associado") = "ok" then
response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"
else%>
<span class="estiloNomeTopo">Você precisa de um Patrocinador<br>    para se cadastrar</span>
<%
end if
%>

bom o probelmas que estão acontecendo.

 

quando ele verifica se a session esta OK ele me traz certinho a mesnagem na tela com o nome do usuário, porem quando eu clico em algum link do site onde é feita a verificação novamente se a session esta OK ele retorna um erro que criei para impedir que a pagina seja acessada caso o não se tenha um usuário cadastrado, mas como se esta impresso na tela o nome do usuário na tela, de forma que a session esta OK.

 

Para fazer um teste acesse o link http://www.conquistta.com.br/?id=governadormt verão que aparec o nome do usuário normal, porem se clicar no link cadastr-se por exemplo (que uma pagina que não deve ser acessada caso não se coloque um nome de usuário correto da erro, como se a session estive expirada ou não existice

 

alguém sabe se estou errando no código?

lembrnado que fiz 2 IF porque preciso fazer 2 verificações 1 se a sesion esta correta outra para verificar se esta session é mesma que se esta tentnado acessar em outro momento, tipo eu entrando com o nome de outrro associado

 

outro link para ser testado para ver que os nomes são trocados é http://www.conquistta.com.br/?id=sergioalex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi corretamente qual a sua duvida e o problema. Testando aqui não deu o erro informado, mas se eu mudar o ID na querystring ainda assim aparece como sendo o daquele que aparece no link.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade assim como falei anteriormente

 

Qundo o usuário entra direto pelo site www.conquistta.com.br somente o código tem que dar a mensagem informando que não foi encontrado nenhum usuário, caso ele entre com o endereço www.conquistta.com.br/?id=seulogin ele deve verficar se o login é valido e se for criar a session e imprimir na tela o onme do usuário.

Algumas paginas como a de cadastro não odem ser acessadas caso o olgin do usuário não esteja coretaemnte devinido na URL.

O rpincipal problema que estou tendo é que não consigo que quando o o usuário este em uma URL valida com login valido e ele trocar sem fechar o navegar para outra URL com login valido ele troque o nome do usuário sozinho, hoje mesmo que eu troque a URL por outra também valida continua aparecendo a o onme do primeiro usuário que acessou, a sesion não esta sendo fechada, não consebgui cehgar a um código que consiga fazer a verificação coreeta de todas as partes

 

1 - se o login é valido, cria a session e imprime o nome do usuário na tela

2 - se o usuário não é valido não cria a session e imprime a mesagem de rro na tela

3 - se o usuário trocar a url sem fechar o navegado e este login for correto recriar a session e imprimir na tela o novo nome do novo usuário baseado no novo loginj informado

4 - caso o novo login infomado na url seja invalido fechar todas sessions que tinha sido criadas e imprimir na tela o erro que o usuário não foi achado

 

deixo aqui 2 URL validas para ser tesadas como esta acontecendo

 

http://www.conquistta.com.br/?id=sergioalex

http://www.conquistta.com.br/?id=governadormt

 

códigos que estou utilizando

 

 

pagina que verifica se a sesison esta ok, caso contr´rio verifica o login pela querystring e cria session ou não

 

<%
if session ("associado") <> "ok" then
	'else
		associadoCad = request.QueryString("id")
		session("recLogin") = associadoCad
		Set RS = Server.CreateObject("adodb.recordset")
		SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
		RS.Open SQL,Conn,3,3
			if rs.eof then
			response.Redirect("default.asp")
			else
				session ("associado") = "ok"
				associado = session ("associado")
				session ("nome") = Rs("nome")
				session ("login") = Rs("inscricao")
				session("IDAssociado") = Rs("IDASSOCIADO")
			end if
end if

%>

código que vai no inicio das paginas que porecisam da verificação do usuário

 

<%
if session ("associado") = "ok" then
%>
aqui vem todo o conteúdo do site caso a session esteja ok
ou coloqco o erro para o usuário
<%
else
response.write "<script>location = ""default.asp"";alert(""Você não pode se cadastrar neste momento, pois não foi identificado um Patrocinador para você. Por favor entre com o endereço   [   www.conquistta.com.br/login do seu patrocinador   ] ou utilize nosso link de CONTATO para falar com a empresa e verificar o lider mais próximo a você"")</script>"
end if
%>

chamada da função que fica em todas as paginas

 

<!--#include file="funcao_verifica_associado.asp"-->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado, consegui chegar peto, montei estes IF que quase fez tudo que eu precisava, veja:

 

<%
if session("associado") = "ok" then
	response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
	response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"

		else if request.QueryString ("id") = "" then
			response.Write "<span class=""estiloNomeTopo"">Você precisa de um Patrocinador<br>    para se cadastra</span>"
				
				else if request.QueryString ("id") <> session ("login") then
					associadoCad = request.QueryString("id")
					session("recLogin") = associadoCad
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
					RS.Open SQL,Conn,3,3
						if rs.eof then
						response.Redirect("default.asp")
							else
							session ("associado") = "ok"
							associado = session ("associado")
							session ("nome") = Rs("nome")
							session ("login") = Rs("inscricao")
							session("IDAssociado") = Rs("IDASSOCIADO")
						end if
					response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
					response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"

else
	associadoCad = request.QueryString("id")
	session("recLogin") = associadoCad
	Set RS = Server.CreateObject("adodb.recordset")
	SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
	RS.Open SQL,Conn,3,3
		if rs.eof then
			response.Redirect("default.asp")
				else
				session ("associado") = "ok"
				associado = session ("associado")
				session ("nome") = Rs("nome")
				session ("login") = Rs("inscricao")
				session("IDAssociado") = Rs("IDASSOCIADO")
		end if
	response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
	response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"
				end if
		end if
end if
%>

A única coisa que não consegui fazer aqui foi comparar se a URL atual é igual a session que esta criada no momento, se eu conseguir fazer isto tudo ficará OK, porque ai uma vez comprada as 2 URL (atual com a session gardada) eu posso dar um fechar a session antiga e recrar uma nova apartir da nova querystring, fazendo assim a troca de session de usuário sem a necessidade de fechar o navegador.

 

Você sabe se tem como comprara se existe algum comando no asp que faça a compração da URL atual com a um valor gardado na session anteriormente?

 

tipo

 

Session guardada = jorgekania

URL atual: /default.asp ou mariadenazare ou ainda /cadastro.aps

veja que neste exemplos que dei eu posso ter um URL vinda de uma querystirng ou não, e é ai que eu estou me perdendo porque se eu colcoar algo do tipo

 

if request.QueryString ("id") <> session ("login") then
aqui toda a rotina para entrar no banco e fazer a verificação da nova string

o que ocorre se eu fazer isto, as paginas que precisam de verificação como a http://www.conquistta.com.br/?s=cadastro_passo1.asp não passam, ficam tentando conetar na pagina mas não vai, acredito que seja algo porque não existe um string para ser verificada, acho eu.

Na verdade no código acima até tem esta rotina se você ver, porem ela não tem funcionalidade porque uma vez criada a sesion no utimo IF ele ignora esta verificação de igualdade na URL, se eu colocar esta verificação de igualdade para abrir os IF da erro quandoa lgume tenta entra de cara no site pela URL pura do site, www.conquistta.com.br, acredito que ele fica tentando procurar um querystring e não consegue e não entra na pagina fica somente tentando carregar, como no caso que passei acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teste se a querystring vem vazia, se vier mostre a página normalmente, se não vier faça a comparação com a session que armazena esse nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Salgado,

 

então eu estou fazendo esta verificação no código acima, veja esta parte do código

 

else if request.QueryString ("id") <> session ("login") then
					associadoCad = request.QueryString("id")
					session("recLogin") = associadoCad
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
					RS.Open SQL,Conn,3,3
						if rs.eof then
						response.Redirect("default.asp")
							else
							session ("associado") = "ok"
							associado = session ("associado")
							session ("nome") = Rs("nome")
							session ("login") = Rs("inscricao")
							session("IDAssociado") = Rs("IDASSOCIADO")
						end if
					response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
					response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"

Porem é claro que não funcionar, porque no o inicio do código eu faço a referencia se a session esta OK

 

if session("associado") = "ok" then
	response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
	response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"
e ai é obvel que ele vai passar direto pela próxima verificação, o caso é que se eu mudar o código e colocar a verificação da URL e comparar com session já criada anteriormente, acontecem 2 erros:

 

1 - Se você tentar entrar no site com a URL pura www.conquistta.com.br não entra, fica tentando conectar e não vai.

2 - Se eu conseguir entrar na pagina, quando eu clicar em um link onde é feito a verificação se a session ("associado") já foi criada, também da não entra fica tentando conectar mas não entra.

 

Como disse anteriomente não sei exatamente onde esta o erro, porque não aparece nenhum erro no código, só não entra na pagina nestes casos, acredito que por eu estar fazer referencia a querystring e quando eu entro com a URL pura não existe uma (?) querystring para ser analizada, ele deve estar se perdendo, o mesmo para quando tento entrar em uma pagina na quanl necessita da verificação da criação da session ("associado") antes para prosseguir.

 

Código completo novamente

 

<%
'verifico se existe a session("associado") já criada e se esta OK
if session("associado") = "ok" then
	response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
	response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"

		'verifico se string da URL não esta vazia
		else if request.QueryString ("id") = "" then
			response.Write "<span class=""estiloNomeTopo"">Você precisa de um Patrocinador<br>    para se cadastra</span>"
			
				'verifico se a querystring atual é igual a 	session ("login") criada anteriormente
				else if request.QueryString ("id") <> session ("login") then
					session.Abandon 'fecho todas as session criadas anteriomente para poder recriá-las
					associadoCad = request.QueryString("id")
					session("recLogin") = associadoCad
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
					RS.Open SQL,Conn,3,3
						if rs.eof then
						response.Redirect("default.asp")
							else
							session ("associado") = "ok"
							associado = session ("associado")
							session ("nome") = Rs("nome")
							session ("login") = Rs("inscricao")
							session("IDAssociado") = Rs("IDASSOCIADO")
						end if
					response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
					response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"

'se todas condições acima estiverem erradas então vem para ca e pega aquerysting para criar a session ("associado") e todas outras necessárias
else
	associadoCad = request.QueryString("id")
	session("recLogin") = associadoCad
	Set RS = Server.CreateObject("adodb.recordset")
	SQL = "select * from associados2 where inscricao='"&associadoCad&"' or login='"&associadoCad&"'"
	RS.Open SQL,Conn,3,3
		if rs.eof then
			response.Redirect("default.asp")
				else
				session ("associado") = "ok"
				associado = session ("associado")
				session ("nome") = Rs("nome")
				session ("login") = Rs("inscricao")
				session("IDAssociado") = Rs("IDASSOCIADO")
		end if
	response.Write "<span class=""estiloNomeTopoSimples"">Você está na página de,<br></span>"
	response.Write "<span class=""estiloNomeTopo"">"&session ("nome")&"</span>"
				end if
		end if
end if
%>

Ai é que estou tentando arranjar uma maneira de fazer, estou dando uma lida em ServerVariables para ver se consigo algo, se tiver alguma idéia por favor, manda ai.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, não li todo o conteudo do post, mas a logica é assim:

 

ao carregar verifica se a sessão está vazia, se estiver então faz a validação. se a sessao tiver alguma coisa e a querystring for diferente do valor da sessao, então faz a validação novamente. segue abaixo um exemplo

if (session("id") <> request.quesrystring("id")) or session("id")="" then

 'seu select vai aqui para fazer a consulta. abaixo o teste no recordset, se não encontrou o ID mostra a mensaem
 if rs.eof then
  response.write "id não encontrada. acesso negado"
  response.end
 end if

end if

abraço e espero ter ajudado

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.