$_SESSION dentro de if não salva os dados [RESOLVIDO]

1. $_SESSION dentro de if não salva os dados [RESOLVIDO]

Leonardo J. Oliveira
leojuoli

(usa Debian)

Enviado em 03/11/2015 - 16:41h

Estou criando um pequeno sistema de fim de semana e me deparei com um problema, originalmente não uso PHP mas fui indicado a usa isso por um amigo. Acontece que eu precisei usar os dados da sessão do navegador pra executar ações sem que o usuário tenha acesso aos dados facilmente. No PHP isso é feita com o Array $_SESSION, acontece que eu testo com um if se o usuário está logado antes de fazer as atribuições do $_SESSION, eu sei que está logado porque exibo outras coisa juntas (é basicamente um leitor de XML). Faço as atribuição na sessão e imprimo o array com print_r, aparentemente está tudo bem: imprime todos os dados que coloquei no array. Imprimi ele no header da página, e ai surge um problema: com o print_r o resultado é diferente, é como se os dados que armazenei dentro do if fossem "dessetados" (com um unset, sei lá, mas nem uso unset). Apenas dados que incluo no array fora dos ifs ficam no ficam no array, eu acho que não entendi como funciona o $_SESSION então. Alguém pode me explicar porque esse erro ocorre? Ou alguém sabe como passar os dados pra outra página (o método POST não é bom porque o usuário pode alterar os inputs, mesmo ocultos, passar pelo url com get dá o mesmo problema)?


  


2. Re: $_SESSION dentro de if não salva os dados [RESOLVIDO]

Leonardo J. Oliveira
leojuoli

(usa Debian)

Enviado em 03/11/2015 - 18:45h

Eu meio que resolvi, mas ainda não sei porque isso acontece. Basicamente eu tirei um if (reduzindo o numero de funções), fiz um negócio qua na minha cabeça força a variável a ser uma string (não me culpem, eu não programo em PHP é só um projeto pra teste) e dei um session_write_close(), fica assim:

$_SESSION['nome'] = ''.$titulopod.'';
$_SESSION['feedurl'] = ''.$feedurl.'';
$_SESSION['imgassin'] = ''.$imgdef.'';
$_SESSION['trackid'] = ''.$trackid.'';

session_write_close();

Resolveu meu problema, porém fico com a impressão que é uma 'gambiarra' isso.
--
Leonardo Juoli
[email protected]