Ir para conteúdo

POWERED BY:

Arquivado

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

Prove Yourself

Checar se session_start já foi chamada antes

Recommended Posts

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
		  }
	  }
  }
//o resto e simples tambem pode ser usado como boleano ou inserido a função dentro do if.

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

[...] 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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

// 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 //
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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.

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.