COMO RECUPERAR UMA SESSION?

Enviada por LEONARDO 
LEONARDO
COMO RECUPERAR UMA SESSION?
03 de January de 2003 às 06:03PM
Olá, eu tenho o seguinte código:
session_start();
$s_nome = $linha[nome];
session_register("s_nome");
echo "<meta http-equiv=refresh content=\"0;url='autorizado.php'\">";

só que quando estou na página autorizado.php, eu não estou conseguindo recuperar o valor de s_nome. Estou usando o seguinte código:

<?
session_start();
echo $s_nome;
?>

o que está errado ? não aparece nada na tela . . .

ps.: já li todos os tutoriais deste site.
Lauro A Lima de Brito
Re: COMO RECUPERAR UMA SESSION?
03 de January de 2003 às 07:02PM
<?
session_register('s_nome');
echo $s_nome;
?>
Diferente do ASP em php voce tem que charmar o session_register('variavel') em todas as paginas que for usar a session.

session_start() e session_register() aparentemente a meu ver fazem a mesma coisa.
Rodrigo Romano Moreira
Re: COMO RECUPERAR UMA SESSION?
03 de January de 2003 às 09:57PM
Utiliza assim :
<?
session_start();
session_register("s_nome");
$s_nome = $linha[nome];
echo "<meta http-equiv=refresh content=\"0;url='autorizado.php'\">";
?>
Rodrigo Romano Moreira
Re: COMO RECUPERAR UMA SESSION?
03 de January de 2003 às 10:03PM
session_start() e session_register() não são a mesma coisa.
Para recuperar as variaveis não precisa chamar session_register() denovo,só session_start().
Agora se session_start() não foi chamada antes de session_register(), uma chamada implícita para session_start() sem parâmetros será feita.
Rodrigo Romano Moreira
Re: COMO RECUPERAR UMA SESSION?
03 de January de 2003 às 10:09PM
Verifica ,se no php.ini (usando o phpinfo()),se não está marcada a opção register_globais=OFF.
Se estiver ,para recuperar o valor use :
$_SESSION['s_nome'];
Exemplo:
<?
session_start();
echo $_SESSION['s_nome'];
?>
Jayr Porto
Re: COMO RECUPERAR UMA SESSION?
04 de January de 2003 às 12:37PM
Confusão bem comum e que complica todo mundo.
Na hora de registrar a seção, utilize (na ordem):

section_start():
section_register('variavel'):

A variável já pode estar setada ou ser setada depois do registro na seção (não importa).

Na hora de recuperar os dados, é sempre bom utilizar dois parametros de consulta que, distintamente darão a segurança de estar com uma variável realmente passada por section:

verifique se a seção foi criada antes de recuperar os dados dela:

if (!$PHPSESSID) {
// código de não autorizado
}

Depois verifique os dados registrados

section_start():
$variavel = $HTTP_SESSION_VARS['variavel'];

Caso você apenas utilize a segunda linha para igualar a variável ao que for passado pela section, o usuário pode burlar seu codigo passando esta variável por referencia e entrar na sua página.

Outra coisa importante e pouco comentada em diversos manuais por ai é que, se vc quiser passar mais de um parâmetro (login e senha por exemplo), tem de dar um comando section_register() para cada variável a ser registrada. Da mesma forma, de um comando de recuperação para cada uma.
Sei que muita gente deve estar querendo meu fígado dizendo que falei m... mas, essa história de section depende TOTALMENTE da versão do php e das configurações do php.ini que variam muito (inclusive da plataforma utilizada). Estas rotinas descritas acima funcionam para versão >4.0.6 do php com register_globals=ON. Caso esteja para OFF, utilize $_SESSION[variavel] para registrar e recuperar as variáveis.

Bom, isso que descrevi (bem resumido), é uma colhetânea de diversos manuais e, existem diversas opções para o uso de seções que implementam, entre outras coisas, cookies, arquivos gravados no servidor, local de gravação das variáveis de seção (local mais seguro que o /tmp) e outros.

O erro mais comum que tenho visto por ai é realmente em uma configuração do servidor (php.ini). Nele tem uma setagem implicita (que toda m... de provedor deveria fazer de cara e não faz pois prefere códigos que deem mais dinheiro como ASP) que é o DIRETÓRIO TEMPORÁRIO DO PHP. Se ele não estiver configurado e com permição 0777, vai dar problema pois nenhum arquivo temporário será gravado no servidor. Para saber se estas setagens estão de acordo (tmp directory, register_globals, e outras), crie um novo arquivo no seu servidor (com qualquer nome) e coloque este código dentro dele.

<?
phpinfo();
?>

Rode que ele te mostrará uma tabela gigantesca com todas as configurações do seu PHP.

Boa sorte
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.