Ir para conteúdo

POWERED BY:

Arquivado

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

Keitaro

Desvendando SESSION e HEADER

Recommended Posts

Desvendando SESSION e HEADER

por Keitaro | 17/02/04

 

Ae galera, irei abordar neste tópico um explicação geral dos problemas que todos tem ao criar um sistema de login/senha para suas páginas usando SESSION e HEADER.

 

Veremos dois scripts básicos para ter certeza que não é culpa do SESSION ou HEADER, sempre digo a todos, se um script simples faz o que tem que fazer, porque um mais incrementado não o fará?

 

Veja os dois códigos abaixo:

 

reg_session.php-----------<?if(!empty($_POST['nome'])){	session_start();	$_SESSION['nome'] = $_POST['nome'];	header("Location:ver_session.php");}?><form name="form1" method="post" action="<?=$_SERVER['PHP_SELF'];?>"><input type="text" name="nome"><input type="submit" name="Submit" value="Submit"></form>ver_session.php----------------<?session_start();if(empty($_SESSION['nome']))	header("Location:reg_session.php");else	echo $_SESSION['nome'];?>
Testem e veja se não funciona? Funcionou não? Se não funcionou é porque o código não está identico ao meu.

 

Após isso vamos às explicações básicas.

 

SESSION

Nesse ponto, não tem muito erro, a maioria dos erros não são causados por eles, basta você escrever corretamente as declarações do $_SESSION que não tem erro.

 

HEADER

Aqui está o ponto que deve se tomar muito cuidado. O header pode direcionar a página atual para um outro arquivo, porém há cuidados a serem tomados.

 

Veja os dois codigos abaixo:

 

header_correto.php----------------------<?header("pagina.php");echo "abc";?>header_errado.php----------------------------<?echo "abc";header("pagina.php");?>pagina.php------------------<?echo "Este é o arquivo pagina.php que foi exibido através do header.";?>
Abra o header_correto.php e o header_errado.php o primeiro caso vai funcionar correto o segundo aparecerá erro.

 

Nossa! :blink: Porque ocorre erro? Ambos os códigos são iguais, com exceção da ordem do echo e header... hum.. Opa! Pera ai! Será que é isso que faz diferença?

 

Exato! O header quando for executado, tem de ser a primeira coisa a ser exibida da página, qualquer outro código impresso (echo, print ..) ou que já exista um código anterior ao header, desse tipo:

 

<html></html><?header("pagina.php");?>
No caso só o fato de <html></html> já estar antes do header, já causaria um dano na execução do código.

 

A explicação que tenho para isso, é que o header funcionaria como um substituidor do código do arquivo chamado, e para evitar conflitos ele não pode misturar os códigos dos dois arquivos, para isso se usária o include ou require_once.

 

Portanto, se o seu código está causando erros de header, verifique o código, verificando se não está sendo nada impresso antes do header.

 

Dúvidas Frequentes

 

1- Mas, nos seus códigos, há outras coisas sendo executadas antes do header(), e mesmo assim funciona. O header() não deveria vim em primeiro lugar? (17/02/04)

R. Lembrando, o header deve vim antes de qualquer coisa IMPRESSA, seja pelo echo ou um codigo anterior, portanto, posso usar if's, loops, sessions desde que nada seja impresso :lol: .

 

2- Eu estou usando frames para linkar um arquivo PHP do meu servidor para outro, mas não consigo receber as sessions porque? (19/02/04)

R. O sesions trabalha com arquivos que são gerados temporariamente na pasta temp do servidor. Nesses arquivos estão registrados os valores que você registrou, portanto só existira a sessions na pasta temp do servidor onde foi puxado. Vamos exemplificar com um diagrama:

 

Imagem Postada

 

O host2 está chamando o arquivo reg_session.php que esta num outro host, denominado host1. Foi registrado a $_SESSION, porém este foi armazenado na pasta temp do host1 e não do host2, portanto se chamarmos agora o arquivo get_session.php no host2 ele não terá os valores das sessions que estão no host1.

 

Espero que este texto tenha ajuda o pessoal que vive se confrontando com header e session, e que chegam a perder a cabeça com isso. Lembrem-se, a principal causa dos erros surgem do mal uso do header.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo .. Eu não consegui fazer funcionar esse código, copiei certinho até os nomes dos arquivos é igual...

será que tem aguma configuração no PHP para funcionar variáveis de sessã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.