Bonjour,
Alors je vous explique, j'ai fait une
<?php if($rang == 3){ ?>
<li><a href="admin/index.php">Administration</a></li>
<?php }else{} ?>
Et j'ai une erreur en disant que je n'ai pas défini ma variable,
pourtant je l'ai déclarée...
Code header.php :
<?php
require_once('config/bdd.php');
if(@$_GET['logout'] == 1){
session_destroy();
header('Location: index.php');
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div class="menu">
<ul>
<li><a href="index.php">Accueil</a></li>
<?php if(!empty($_SESSION['session'])){ ?>
<li><a href="profil.php?session=<?php echo $_SESSION['session']?>">Mon Compte</a></li>
<?php }else{} ?>
<li><a href="shop.php">Boutique</a></li>
<li><a href="news.php">Articles</a></li>
<li><a href="support.php">Support</a></li>
<?php if($_SESSION['rang'] == 3){ ?>
<li><a href="admin/index.php">Administration</a></li>
<?php }else{}?>
<?php if(!empty($SelectUser['session'])){ ?>
<li><a href="index.php?logout=1">Déconnexion</a></li>
<?php }else{} ?>
<?php if(empty($_SESSION['session'])){ ?>
<li><a href="login.php">Connexion</a></li>
<li><a href="register.php">Inscription</a></li>
<?php }else{}?>
<br>
</ul>
<div class="widget-text">
Bonjour, <br>
<strong><?php echo $_SESSION['username']; ?></strong>
</div>
</div>
Code bdd.php :
<?php
session_start();
date_default_timezone_set('Europe/Paris');
$date = date('d/m/Y');
$heure = date('H:i:s');
try
{
$bdd = new PDO('mysql:host=localhost;dbname=highlobby', 'root', 'root', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(!empty($_SESSION['session'])){
$req_SelectUser = $bdd->prepare('SELECT * FROM users WHERE session=:session');
$req_SelectUser->execute(array(
'session' => $_SESSION['session']
));
$SelectUser = $req_SelectUser->fetch();
$username = $SelectUser['username'];
$mail = $SelectUser['mail'];
$password = $SelectUser['password'];
$session = $SelectUser['session'];
$rang = $SelectUser['rang'];
}else{
return true;
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Voilà, je vous remercie, bonne journée.
Cordialement, Kais.
Voila si tu veut faire un lien qui apparet seulement si on est admin il faut avoir en session exemple $_SESSION['auth']->rang
ensuite tu peut vérifier si elle est définie et pas vide.
// si c'est vide elle retourne rien
$rang = isset($_SESSION['auth']->rang) && !empty($_SESSION['auth']->rang ) ? $_SESSION['auth']->rang : 'sinon rien' ;
<?php
//si c'est pas vide et egal a trois c'est ok
if($rang === 3){
//affiche ce qui est autoriser au rang 3
}
?>
Maintenant il m'affiche plus d'erreur mais par exemple j'ai mis
<?php if($rang == 3){ ?>
<li> <a href="admin/index.php"><img src="images/tnt-icon.png">   Administration</a></li>
<?php
<?php }else{} ?>
Je me suis mis en rang 3 sauf que mon lien vers l'admin ne s'affiche pas @Matdosi
Alors le var_dump de SelectUser est de boolean:false et le var_dump de $rang c'est NULL
Je ne comprend vraiment pas pourquoi tu stock tes variable de session dans le try de ta connexion en bdd ?
moi je me fais un fichier bdd que j'inclue ensuite je me fais un fichier auth.
Enfin tu veut des variable de session, mai fait tu une connexion avant ? la session se créer a ce moment la quand un user ce connecte.
Ensuite seulement tu peut travailler avec les session, si ta variable de session $_SESSION['rang' ]
n'est pas définie quand tu fait un login normal que tu ne puisse pas la définir, de plus il faut toujours selon moi faire des isset etc... pour être sur.
comence par faire un var_dump($_SESSION);
pour être sur que tu récupère bien un utilisateur connecter, même si tu fait $rang = $_SESSION['rang']
si tu ne récupère pas de session avec un utilisateur ta varable sera toujours empty et donc pas définie car ta variable de session est vide et ne contient pas rang, d'ou le code que je t'ai donner plus tôt.
tu peut définire une variable mai si sont contenue n'est pas définie ça ne sert a rien.