Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 ?
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!
session_start inicia as funçoes de sessão na pagina ;)
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 ;)
exato Bruno Augusto ... :clap: bote ela no topo da pagina ...
beleza galera...
muuito obrgaido pelas explicações. :D
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.
>
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
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 ;)
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.
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...
Está correto, sem ele você não consegue usar o serviço!