Bonjour,
J'apprends la POO en PhP (dans un cas concret), et je m'amuse à crée un mini-site, et je me suis fais une petite classe pour gérer les redirections (au niveau des permission, 3 niveaux d'utilisateurs : membre / client / admin), voilà mon code :
<?php
/**
* Redirect user in member area, or client area, or admin area
* See if cookies is here, if so, redirect user
*/
class Redirect{
private $host = 'http://localhost/poo'; // URL to redirect
/**
* Redirect user if cookie, or session exist
*/
public function user()
{
if(isset($_COOKIE['remember']))
{
require 'Database.php'; // Access to database
// Verify if token exist
$req = $db->prepare("SELECT token, type, id FROM users WHERE token = ?");
$req->execute(array($_COOKIE['remember']));
$cookie = $req->rowCount();
if($cookie == 1)
{
// If cookie true
$cookie = $req->fetch();
$_SESSION['type'] = $cookie['type'];
$_SESSION['id'] = $cookie['id'];
}else{
// If cookie false
}
}
// If sessions exists we redirect user in function of the type
if(isset($_SESSION['type']))
{
$session = $_SESSION['type']; // Get type of user (admin, member, client)
switch($session)
{
case 'member':
header("Location:".$this->host."/member");
case 'client':
header("Location:".$this->host."/client");
case 'admin':
header("Location:".$this->host."/dashboard");
}
}else{ // Else, redirect to login form
header('Location:'.$this->host."/login");
}
}
}
?>
Le problème est que du coup, il me redirige trop de fois vers login.php, je voudrais que quand quelqu'un arrive sur l'espace membre et que son type n'est pas membre (ou qu'il nest pas log (donc pas de sessions)) qu'il soit redirigé vers login.php, pareil pour les autres. Mais le problème, c'est que en arrivant sur login.php, il rappelle la class à chaque fois et refait la redirection vers login.php à chaque fois!
Je n'ai pas d'idées de comment faire pour règler le problème! Merci de m'avoir lu!
Cordialement.