Array
(
)

Verificar se usuário está logado não confere.

PHP
Adenesjr
   - 21 jul 2014

Estou com um problema de reconhecer se o usuário está logado, quando mudo de página verifico se o usuário está logado.
Uso um método para criar uma sessão e um cookie para melhor segurança. Logo tranquilamente, porém quando mudo para outra página verifico se o usuario está logado, só que está dando como false, usuário não logado. verifiquei se o valor do cookie se confere com o cookie criado, estão diferente e não tenho idéia o porque.
#Código
//método loga usuario
function logaUsuario($usuario, $senha, $lembrar = false){
.
.
.
// Usuário logado com sucesso
$_SESSION[$this->prefixoChaves . 'logado'] = true;

// Define um cookie para maior segurança?
if ($this->cookie) {
// Monta uma cookie com informações gerais sobre o usuário: usuario, ip e navegador
$valor = join('#', array($usuario, $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']));
// Encripta o valor do cookie
$valor = sha1($valor);

// Cria o cookie
setcookie($this->prefixoChaves . 'token', $valor, 0, $this->cookiePath);
}
}
//método que verifica se o usuario está logado ( onde não estou conseguindo )
function usuarioLogado($cookies = true) {
// Inicia a sessão
if ($this->iniciaSessao AND !isset($_SESSION)) {
session_start();
}

// Verifica se não existe o valor na sessão
if (!isset($_SESSION[$this->prefixoChaves . 'logado']) OR !$_SESSION[$this->prefixoChaves . 'logado']) {
// Verifica os dados salvos nos cookies
if ($cookies) {
// Se os dados forem válidos o usuário é logado automaticamente
return $this->verificaDadosLembrados();
} else {
// Não há usuário logado
$this->erro = 'Não há usuário logado';
return false;
}
}

// Faz a verificação do cookie
if ($this->cookie) {

// Verifica se o cookie não existe
if (!isset($_COOKIE[$this->prefixoChaves . 'token'])) {
$this->erro = 'Não há usuário logado';
return false;
} else {
// o problema está aqui
// Monta o valor do cookie
$valor = join('#', array($_SESSION[$this->prefixoChaves . 'logado'], $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']));
// Encripta o valor do cookie
$valor = sha1($valor);

// Verifica o valor do cookie
if ($_COOKIE[$this->prefixoChaves . 'token'] !== $valor) {
$this->erro = 'Não há usuário logado';
return false;
}
}
}

// A sessão e o cookie foram verificados, há um usuário logado
return true;
}