Ir para conteúdo

POWERED BY:

Arquivado

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

Nigol

Entendendo $_SESSION

Recommended Posts

Galera estou com uma dificuldade de entender o uso coreto da $_SESSION...

 

 

no site que estou criando estou tendo que sempre colocar um session_start(); para poder acessar arquivos de minha sessão anterior...

 

isto está correto?

 

ou assim estou abrindo várias sessões ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, a forma como você esta utilizando esta correta.

 

Toda vez que você utiliza o session_start você esta avisando o php que você vai utilizar as funções referentes a esse serviço.

 

Apartir dai você pode manipular os dados na sessão utilizando suas funções sem maiores problemas.

 

 

Para saber mais sobre sessão, recomendo que você de uma olhada na documentação do php: + informações aqui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém session_start() envia cabeçalho, se já houver algum tipo de saída HTML (um espaço que seja), vai dar pau xD

 

E se a sessão já tiver sido iniciada, também ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

No topo de suas páginas adidione:

 

(!session_start()) ? session_start() : false;

 

Verifica se o sessão já foi iniciada, caso contrário, ele inicia. Isso evita erros, de no caso você ter mais de um session ativa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No topo de suas páginas adidione:

 

(!session_start()) ? session_start() : false;

 

Verifica se o sessão já foi iniciada, caso contrário, ele inicia. Isso evita erros, de no caso você ter mais de um session ativa.

Uhn... A ideia de verificar se a sessão está iniciada antes de fazer é interessante, mas a forma que você utiliza me parece um pouco estranha.

session_start() cria uma sessão (ou resume a sessão atual baseada numa id de sessão sendo passada via uma variável GET ou um cookie).

 

Esta função sempre retorna TRUE.

 

http://br.php.net/session_start

 

Então, este trecho de código sempre vai cair no false, mas vai iniciar a sessão (com o !session_start()). Acho que uma forma melhor de fazer isto é verificando se existe $_SESSION. Algo assim:

 

<?php
if(!isset($_SESSION)) {
   session_start();
}

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites
Uhn... A ideia de verificar se a sessão está iniciada antes de fazer é interessante, mas a forma que você utiliza me parece um pouco estranha.

 

Estou utilizando o IF simplificado, porém, ao invés de verificar a variável de servidor $_SESSION, eu tentei verificar logo a função, mais realmente só cai no false, melhor utilizar a forma tradicional, a que você sugeriu ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funciona muito bem Alaerte.. veja:

<?php
(!session_start()) ? session_start() : false;
(!session_start()) ? session_start() : false;
(!session_start()) ? session_start() : false;
(!session_start()) ? session_start() : false;

 

resultado:

Notice: A session had already been started - ignoring session_start() in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\index.php on line 3

 

Notice: A session had already been started - ignoring session_start() in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\index.php on line 4

 

Notice: A session had already been started - ignoring session_start() in C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\index.php on line 5

ou seja, o teu teste: !session_start() faz uma chamada a função, e inicia ela novamente.

 

Possivel que o teu servidor esteja com o nivel de erros 'mal configurado', ai você não vê os Notices.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois, eu testei em um servidor pre-configurado, é que não tava em minha máquina, baixei e instalei pra rodar isso... testei aqui no meu agora, realmente não da certo... a forma correta seria a tradicional mesmo...

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.