Olá Rafael! Meu amigo, pode ser que esteja ocorrendo alguma má interpretação. Se me lembro bem, quando o instrutor usa a função : usuarioLogado(); Ele está querendo saber se o usuário já se encontra Logado. Se assim for a sua função tem q Retornar um Isset dessa mesma SESSION. Pelo oq eu estou vendo, vc ao usar a função: usuarioLogado(); vc está na vdd criando uma SESSION vazia com o nome: "usuario_logado".
Verifica depois pra gente se realmente há necessidade dessa função. Não sei bem ao certo, mas tenta ver se o problema é essa função que cria uma SESSION vazia.
Fiquei curioso, pq vc colocou um session_start Logo depois de vc destruir todas. Há realmente a necessidade disso? Ao fazer os teste em meu pc, funcionou sem o session_start na função logout();
E tenta vê se não seria melhor se o arquivo estivesse formatado dessa forma:
<?php
session_start();
function logaUsuario($usuario) {
$_SESSION["usuario_logado"] = $usuario;
}
function usuarioEstaLogado() {
return isset($_SESSION["usuario_logado"]);
}
function verificaUsuario() {
if(!usuarioEstaLogado()) {
$_SESSION["danger"] = "Você não tem acesso a esta funcionalidade.";
header("Location: index.php");
die();
}
}
function logout() {
session_destroy();
}