[RESOLU] connection/deconnexion

Eléphant du PHP | 133 Messages

29 avr. 2021, 16:33

Bonjour
après avoir initialisé mes variables de session

Code : Tout sélectionner

foreach ($connect as $données) { $_SESSION['Id_Assos'] = $données['Id_Assos']; $_SESSION['Id_Droit'] = $données['Id_Droit']; $_SESSION['Identifiant'] = $données['Identifiant']; }
Je récupère dans un autre fichier la variable $_SESSION['Id_Droit']

Code : Tout sélectionner

ession_start(); $Droit=$_SESSION['Id_Droit'];
si je suis connecté le code suivant fonctionne par contre quand je clique sur deconnexion ça bug

Code : Tout sélectionner

<?php if ($_SESSION['Id_Droit'] == 3) { ?> <a class="dropdown-item" href="../registration/logout.php">Deconnexion</a> <?php } else { ?> <a class="dropdown-item" href="../registration/login.php">Connexion</a> <?php } ?>
avec comme message
Undefined index: Id_Droit in E:\FFMO\Include\NavUtilisateur.php on line 5
la ligne 5 étant :

Code : Tout sélectionner

$Droit=$_SESSION['Id_Droit'];
Avec mon fichier logout.php écrit comme ceci

Code : Tout sélectionner

<?php // Initialiser la session session_start(); // Détruire la session. if(session_destroy()) { header("Location: ../index.php"); } ?>
La page index.php étant la page d'accueil du site.

J'ai oublier quelque chose, mais quoi?

Mammouth du PHP | 2703 Messages

29 avr. 2021, 16:38

J'ai oublier quelque chose, mais quoi?
initialiser $_SESSION['Id_Droit'] avec un code php qui fonctionne.

Eléphant du PHP | 133 Messages

29 avr. 2021, 16:54

Ben mon code fonctionne sinon quel serait le bon code, parce que là je pédale.
Quand je fais un echo sur ma variable, j'ai bien la valeur.
Merci

Mammouth du PHP | 2703 Messages

29 avr. 2021, 16:56

foreach ($connect as $données) {
$_SESSION['Id_Assos'] = $données['Id_Assos'];
$_SESSION['Id_Droit'] = $données['Id_Droit'];
$_SESSION['Identifiant'] = $données['Identifiant'];
}
echo $_SESSION['Id_Droit'];

cela affiche la valeur attendue ?

Eléphant du PHP | 133 Messages

29 avr. 2021, 17:12

Je viens de refaire à l'instant pour ne pas dire de bêtise, je confirme echo $_SESSION['Id_Droit']; renvoi bien la valeur attendue.
Pourquoi est ce surprenant?

Eléphant du PHP | 133 Messages

29 avr. 2021, 19:07

Voilà mon code qui fonctionne

Code : Tout sélectionner

<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <?php if (isset($_SESSION['Id_Droit'])) { ?> <a class="dropdown-item" href="../registration/logout.php">Deconnexion</a> <?php } else { ?> <a class="dropdown-item" href="../registration/login.php">Connexion</a> <?php } ?> <?php if ((isset($_SESSION['Id_Droit'])) && (($_SESSION['Id_Droit']) == 3)) { ?> <a class="dropdown-item" href="/Federation.php">Administration</a> <?php } ?> <a class="dropdown-item" href="/Federation.php">test</a> </div>

Avatar du membre
Eléphant du PHP | 70 Messages

30 avr. 2021, 09:28

Salut !

Tu pourrais améliorer légèrement ton code, du moins l'optimiser

Etant donner que tu vérifie déja si isset($_SESSION['Id_Droit']) === true, pourquoi le revérifier une seconde fois ici ?
<?php
if ((isset($_SESSION['Id_Droit'])) && (($_SESSION['Id_Droit']) == 3)) { ?>
  <a class="dropdown-item" href="/Federation.php">Administration</a>
<?php } ?>
Tu pourrais simplement vérifier cette condition de cette manière et ne pas à réécrire 2 fois cette même condition :
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
 <?php
 if (isset($_SESSION['Id_Droit'])) { ?>
     <a class="dropdown-item" href="../registration/logout.php">Deconnexion</a>
		<?php
		if($_SESSION['Id_Droit'] === 3) { ?>
         <a class="dropdown-item" href="/Federation.php">Administration</a>
		<?php }
} else { ?>
     <a class="dropdown-item" href="../registration/login.php">Connexion</a>
  <?php } ?>
    <a class="dropdown-item" href="/Federation.php">test</a>
</div>
" La révolution informatique fait gagner un temps fou aux Hommes, mais ils le passent avec leur ordinateur ! " by Khalil Assala

Eléphant du PHP | 133 Messages

30 avr. 2021, 10:05

Oups, en effet merci