• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

blackrider

Problemas com variaveis de sessão em ficheiros diferentes

5 mensagens neste tópico

Bom dia.

Como devem reparar sou novo por estas bandas (descobri este forum algumas (2) semanas atrás) e por isso peço desculpa se este tópico já foi colocado alguma vez, mas dei uma vista de olhos e não encontrei nada que esteja dentro do tema...

Estou a implementar uma aplicação onde coloco um objecto numa variável de sessão:

session_start();

...

$novoObjecto = new objecto(item1,item2,...,item_n);

...

$_SESSION['varSessao'] = $novoObjecto;

...

Este código está no ficheiro "file_1.php" e até aqui tudo corre normal. Acontece que tenho um link para um outro ficheiro chamado "file_2.php" onde chamo novamente a variável de sessão para poder aceder aos dados que coloquei em $novoObjecto. É nesta fase que surge o problema, ou seja, não está nada em $_SESSION['varSessao']... Parece que perdeu os dados pelo caminho.

Exemplo:

Se eu fizer uma coisa parecida com isto:

echo $_SESSION['varSessao']->item1;

Nada fica escrito no output. Acontece ainda uma outra coisa, o código funciona num sistema WinXP com easyphp instalado, e num servidor Linux (Fedora) é que acontece este erro. Alguém e pode dar uma dica sobre o que se está a passar no Linux para que as variáveis de sessão percam os dados de um ficheiro para o outro?

:wallbash: :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nesse outro ficheiro estas a iniciar a sessao? session_start() ? estás a fazer include do ficheiro da class?

Experimenta fazer tipo:

$obj = $_SESSION['varSessao'];

echo $obj->item1;

experimenta fazer error_reporting(E_ALL); no inicio para ver se esta a dar algum erro no Linux :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é por nada, mas duvido que isso funcione (guardar classes), da mesma forma que o serialize() e unserialize() não funciona bem para classes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nesse outro ficheiro estas a iniciar a sessao? session_start() ? estás a fazer include do ficheiro da class?

Experimenta fazer tipo:

$obj = $_SESSION['varSessao'];

echo $obj->item1;

experimenta fazer error_reporting(E_ALL); no inicio para ver se esta a dar algum erro no Linux :P

Afirmativo...

session_start(); Em ambos os ficheiros... e também testei

$obj = $_SESSION['varSessao'];

echo $obj->item1;

e niente...

A forma como eu estou a guardar as classes no Windows funciona perfeitamente, o problema é o Linux exactamente o sistema a onde vai ficar alojada a aplicação. Outra das soluções que via para isto era criar uma tabela temporária com os dados que estão na classe, mas provavelmente iria arranjar outros problemas tais como velocidade de acesso aos dados etc etc etc

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nem por isso blackrider. Basta implementares um método para exportares os dados da classe. Exemplo:

class App {
[...]
function export(){
	$exportar = array();
	$exportar['ola'] = $this->ola;
	$exportar['oi'] = $this->oi;
	return $exportar;
}
[...]
}

$app = new App();
$app->ola = 'oi';
$app->oi = 'ola';
$_SESSION['var'] = $app->export();

Depois para fazer o dito restore,

class App {
[...]
function import($importar){
	foreach($importar as $name => $value)
		$this->$name = $value;
}
[...]
}

$app = new App();
$app->import($_SESSION['var'];

É a única situação que me parece existir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora