Keitaro 0 Denunciar post Postado Fevereiro 17, 2004 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: 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
Keitaro 0 Denunciar post Postado Fevereiro 19, 2004 Coloquei mais um dúvida que algumas pessoas tem com relação a session. Compartilhar este post Link para o post Compartilhar em outros sites
bobi 0 Denunciar post Postado Maio 17, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Maio 17, 2008 Abra um tópico com a sua dúvida bobi... nossa quanto tem esse tópico. Compartilhar este post Link para o post Compartilhar em outros sites