Achei esse código uma bagunça. Como eu sei o que são cada uma dessas sessions se todas possuem o mesmo nome? Existe uma forma melhor de fazer isso?
//index.php
<?php
include("cabecalho.php");
include 'logica-usuario.php'; ?>
<h1>Bem vindo!</h1>
<?php if(isset($_SESSION['success'])) { ?>
<p class="alert-success"><?= $_SESSION["success"] ?></p>
<?php unset($_SESSION['success']);
} ?>
<?php if(isset($_SESSION['danger'])) { ?>
<p class="alert-danger"><?= $_SESSION['danger'] ?></p>
<?php } ?>
<?php if(isset($_SESSION['danger'])) { ?>
<p class="alert-danger"><?= $_SESSION['danger'] ?></p>
<?php unset($_SESSION['danger']);
} ?>
<?php #deslogado com sucesso
if(isset($_SESSION["success"])) { ?>
<p class="alert-success"><?= $_SESSION["success"] ?></p>
<?php } ?>
<?php if(usuarioEstaLogado()) { ?>
<p class="text-success">Você está logado como <?= usuarioLogado() ?>
<a href="logout.php">Deslogar</a>
</p>
<?php } else { ?>
<h2>Login</h2>
<form action="login.php" method="post">
<table class="table">
<tr>
<td>Email</td>
<td><input class="form-control" type="email" name="email"></td>
</tr>
<tr>
<td>Senha</td>
<td><input class="form-control" type="password" name="senha"></td>
</tr>
<tr>
<td><button type="submit" class="btn btn-primary">Login</button></td>
</tr>
</table>
</form>
<?php } ?>
<?php include("rodape.php"); ?>
//logica-usuario.php
<?php
session_start();
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 usuarioLogado() {
return $_SESSION["usuario_logado"];
}
function logaUsuario($email) {
$_SESSION["usuario_logado"] = $email;
}
function logout() {
session_destroy();
session_start();
}
?>
Tentei colocar uma dentro de uma função mas parece que não posso passar para a função isset() uma outra função como parâmetro. Algo como:
function chamaSessionDeslogado() {
$_SESSION["success"] = "Deslogado com sucesso.";
}
//no index.php:
<?php #deslogado com sucesso
if(isset(chamaSessionDeslogado())) { ?>
<p class="alert-success"><?= $_SESSION["success"] ?></p>
<?php } ?>