Ir para conteúdo

Arquivado

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

LuX_

[Resolvido] Armazenar Objetos em Sessão

Recommended Posts

Olá Pessoal, cheguei até a criar um tópico com esse problema, mas ele tava um tanto mal explicado e eu não sei se posse "desenterrá-lo" para explicar meu problema, então eu criei um mais fácil de entender.

 

Experimentem vocês fazer este código ASP:

 

 set Session("usuario") = new Usuario
 Session("usuario").nome = "Teste"
 Response.write Session("usuario").nome

 

A Classe Usuário pode ser algo bem simples:

 

class Usuario
 dim nome
end class

 

O código acima funciona normalmente, mas algo estranho ocorre se a página for redirecionada, veja a seguir:

 

Chamaremos essa página de pagina1.asp

 set Session("usuario") = new Usuario
 Session("usuario").nome = "Teste"
 Response.write Session("usuario").nome
 Response.redirect("pagina2.asp")

 

Chamaremos este de pagina2.asp

response.write Session("usuario").nome

 

Ao tentar este código temos um erro, pois ele perdeu os atributos do objeto (embora um isObject(Session("usuario") ) retorne true)

 

O objeto não dá suporte para a propriedade ou método: 'nome'

 

Alguém já conseguiu driblar esta dificuldade?

 

Obrigado Pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o número do erro ?

você esta utilizando JScript ?

tente assim

 

varlogin=Replace(varlogin,"'","")

session("login")=varlogin

varloginsession=Session("login")

response.write Session("login")

 

abaixo um exemplo que utilizo normalmente.

 

<% Option Explicit
'declara as var
dim varsenha, varlogin, conexao ,rs, SQL, conDBQ, constring, rsselect, sqlselect, rsinsert, sqlinsert, rsupdate, sqlupdate,data
'recupera as var
varlogin=Trim(request.form("login"))
varsenha=Trim(request.form("senha"))
varlogin=Replace(varlogin,"'","")
varsenha=Replace(varsenha,"'","")
if varlogin="" then
response.redirect("logincli_form_treina.asp?msgeof=1")
end if
if varsenha="" then
response.redirect("logincli_form_treina.asp?msgeof=2")
end if
if Session("logado")=True then
response.redirect("logincli_form_treina.asp?msgeof=5")
end if 
%>
<!--#include file="conn/conexao1.asp"-->
<%
call abreconexao
'cria o recordset
Set rs=Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM login WHERE login='"&varlogin&"'"
rs.open SQL,conexao,1,3
if rs.eof then
   response.redirect("logincli_form_treina.asp?msgeof=3")
else
	if Lcase (varsenha) <> Lcase(rs("senha")) then
		response.redirect("logincli_form_treina.asp?msgeof=4")
		session("logado")=False
	else
		session("logado")=True
		session("senha")=varsenha
		session("login")=varlogin
		response.Redirect("administracao_treina.asp")
	end if
end if
set rs=nothing
call fechaconexao%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Xanburzum, este erro não ocore ao armazenar strings, inteiros e arrays.

Ocorre somente com Objetos.

O código do erro eu não vou conseguir providenciar agora, mas eu postei a mensagem de erro na descrição do problema.

Se você puder me ajudar a contornar essa "falha" do ASP ou tiver algum material pra me enviar, eu agradeceria!

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o code que postei e verifique o resultado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Xamburzum, o seu código de fato funciona, mas eu não consegui entender bem o que você quis me explicar.

De qualquer forma encontrei uma solução que parece ser bem interessante: usei dicionários.

Estes são armazenados na Session sem quaisquer problemas e tem estrutura semelhante com a de um objeto.

Considero o problema contornado, mas fico curioso se alguém conseguiu armazenar os objetos na Session.

Muito Obrigado pela atenção.

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.