Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite, tudo bem?
Qual a forma correta de verificar se uma sessão já foi iniciada?
Eu já vi gente checando se session_id() retorna um valor.
Valeu.
Tipo eu tive um problema com PHP 5.5.12 devido ao fato de não poder utilizar variáveis vazias ou não existente, ou seja dava erro ate para testar, ai descobri um método que funciona em qualquer caso nãos ei se é o melhor mais estarei compartilhando.
$_SESSION = array();
if (count($_SESSION)==0) {
session_start();
}
//Admitindo que não utilizaria session_start vazio, ou seja se ele esta vazio ele não existe
depois disso para verificar se contem uma certa chave
//Obs: declarar que $_SESSION = array, não paga os dados do $_SESSION caso já possua algum valor, pelo menos no meu caso não apagou.
$contem_chave= 0; //por padrão não contem a chave
$key=""; //evita erros caso não exista nenhum atributo no $_SESSION
$value=""; //evita erros caso não exista nenhum atributo no $_SESSION
if(count($_SESSION)>0){ //como disse antes se session esta vazio ele não existe
foreach($_SESSION as $key => $value){ //Carrega as variáveis do session
if($key == "id"){ //verifica se já existe um $_SESSION['id']
$contem_chave= 1; //se existir indica que contem
}
}
}Bem a ideia e que isso evita qualquer erro com relação a chamada
Estou deixando minha solução porue testei um serie de codigos que sempre me retornavam um erro, devido as atualizações do php.
[...] devido ao fato de não poder utilizar variáveis vazias ou não existente [...]
O isset() é exatamente para testar isso, não faz sentido algum, o erro deve ter sido com relação a outra parte do seu código.
A intenção de ajudar foi boa, mas cuidado para não passar informação equivocada. :thumbsup:
na verdade é que o isset() dava erro sim no meu servidor, ele funcionava na hora de iniciar um session_start(), sem dar erro dizendo que não existia a variavel, porem quando eu recarregava a pagina e ja existia o session_start(), aparecia mensagens de erro por estar chamando novamente, eu usava o XAMP, com PHP 5.5.12, não sei sera problema de algum versão do xamp que eu baixei mais o erro aparecia, por isso eu usei aquele codigo menos elegante.
Agora que atualizei o xamp o comando esta pegando sem erro
// Obs: declarar que $_SESSION = array, não paga os dados do $_SESSION caso já possua algum valor, pelo menos no meu caso não apagou.
>
http://php.net/manual/pt_BR/function.session-destroy.php
Aquela observação era para mostrar que ao chamar daquela maneira o usuario não perdia os dados, eu sei dos comandos para destruir session
Uma dica acho que vai ser útil, faz um session dizendo se está sendo usada ou não, por exemplo:
$_SESSION['jausou'] = 1;
Ou caso não tenha usado o retorno seria NULL então é só fazer
if($_SESSION['jausou'] == 1) {
// Se já tiver usado código em baixo //
}else {
// Se não tiver usado //
}
>
Uma dica acho que vai ser útil, faz um session dizendo se está sendo usada ou não, por exemplo:
$_SESSION['jausou'] = 1;
Ou caso não tenha usado o retorno seria NULL então é só fazer
if($_SESSION['jausou'] == 1) {
// Se já tiver usado código em baixo //
}else {
// Se não tiver usado //
}
Não!
Isso é amadorismo demais.
>
Não!
Isso é amadorismo demais.
O valor que se retorna é o mesmo, 1 = true , NULL = false. ;)
Você pode fazer assim: