Page 1 sur 1

Condition de connexion user ou admin

Posté : 31 mai 2019, 14:34
par Hyoshiko
Bonjour,

Je fais appel à vous car je tourne en rond je suis en train de faire les conditions de connexion sur ma page index et je m'embrouille avec les conditions.
J'ai rajouté à ma base de donnée une colonne "Type" ou à l'intérieur admin = 1 et user = 0 en auto-incrémentation.
Si c'est = 1 cela m'affiche un bouton admin ( qui va vers le dashboard de l'admin) et un bouton déconnexion.
Si c'est = 0 cela m'affiche le bouton mon compte (qui va vers le profile utilisateur) et un bouton déconnexion.
et si c'est pas ceux là alors cela affiche les boutons inscription et connexion.

Mon souci c'est l'écriture des conditions ... j'ai souhaité faire appel à la colonne Type mais rien y fait cela m'indique " Notice: Undefined index: Type" et du coup je ne sais pas trop comment faire appel à la colonne et indiquer les conditions ci-dessus.

Je vous montre ma tentative x_x. Si vous avez des pistes je suis preneuse !

Code : Tout sélectionner

<?php // Permet de savoir s'il y a une session. // C'est à dire si un utilisateur c'est connecté à votre site session_start(); // Fichier PHP contenant la connexion à votre BDD include('bd/connexionDB.php'); ?> <!doctype html> <html class="no-js" lang=""> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Orthoweb</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="apple-touch-icon" href="apple-touch-icon.png"> <link rel="stylesheet" href="assets/css/bootstrap.min.css"> <!--<link rel="stylesheet" href="assets/css/bootstrap-theme.min.css">--> <!--For Plugins external css--> <link rel="stylesheet" href="assets/css/plugins.css" /> <link rel="stylesheet" href="assets/css/roboto-webfont.css" /> <!--Theme custom css --> <link rel="stylesheet" href="assets/css/style.css"> <!--Theme Responsive css--> <link rel="stylesheet" href="assets/css/responsive.css" /> <script src="assets/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script> </head> <body> <div class='preloader'><div class='loaded'>&nbsp;</div></div> <!-- Sections --> <section id="social" class="social"> <div class="container"> <!-- Example row of columns --> <div class="row"> <div class="social-wrapper"> <div class="col-md-6"> <!--On peut rajouter ici les reseaux sociaux ---> </div> <div class="col-md-6"> <div class="social-contact"> <a href="#"><i class="fa fa-phone"></i>+011 54925849</a> <a href="#"><i class="fa fa-envelope"></i>[email protected]</a> </div> </div> </div> </div> </div> <!-- /container --> </section> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.php"></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li class="active"><a href="#">Home</a></li> <li><a href="consulter.php">Comment consulter ? </a></li> <li><a href="troubles.php">Troubles traités</a></li> <li><a href="visio.php">Télé-orthophonie</a></li> <li><a href="procedure.php">Procédure</a></li> <li><a href="contact.php">Contact</a></li> <?php if($_SESSION['Type'] != '0') { //Sinon s'il y a une session alors on verra les liens ci-dessous ?> <li class="login"><a href="profil.php">Mon compte</a></li> <li class="login"><a href="deconnexion.php">Déconnexion</a></li> <?php }else{ ?> <li class="login"><a href="inscription.php">Inscription</a></li> <li class="login"><a href="connexion.php">Connexion</a></li> <?php } ?> ?> <?php if($_SESSION['Type'] == '0'){ //Sinon s'il y a une session alors on verra les liens ci-dessous ?> <li class="login"><a href="admin.php">Admin</a></li> <li class="login"><a href="deconnexion.php">Déconnexion</a></li> <?php }else{ ?> <li class="login"><a href="inscription.php">Inscription</a></li> <li class="login"><a href="connexion.php">Connexion</a></li> <?php } ?> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>

Re: Condition de connexion user ou admin

Posté : 31 mai 2019, 14:50
par Saian
Salut, alimentes tu bien la variable $_SESSION['Type'] lors de l'identification de l'utilisateur ? et tu devrais plutôt avoir une condition du type :
if (isset($_SESSION['Type']) && $_SESSION['Type'] != '0') {}
Car tant que l'utilisateur n'est pas connecté, tu n'as pas définit $_SESSION['Type'] et utiliser $_SESSION['Type'] provoque la notice "Notice: Undefined index: Type". "L'index Type n'est pas définit" car effectivement le tableau $_SESSION n'a pas l'index Type.
Avec le isset d'abord dans le if si l'index n'est pas définit alors la deuxième partie du if n'est pas évaluée (condition &&) et donc pas d'erreur.

Re: Condition de connexion user ou admin

Posté : 31 mai 2019, 15:12
par Hyoshiko
Salut, alimentes tu bien la variable $_SESSION['Type'] lors de l'identification de l'utilisateur ? et tu devrais plutôt avoir une condition du type :
if (isset($_SESSION['Type']) && $_SESSION['Type'] != '0') {}
Car tant que l'utilisateur n'est pas connecté, tu n'as pas définit $_SESSION['Type'] et utiliser $_SESSION['Type'] provoque la notice "Notice: Undefined index: Type". "L'index Type n'est pas définit" car effectivement le tableau $_SESSION n'a pas l'index Type.
Avec le isset d'abord dans le if si l'index n'est pas définit alors la deuxième partie du if n'est pas évaluée (condition &&) et donc pas d'erreur.
J'ai essayé de modifier mon fichier connexion.php du coup cela donne ça :

Code : Tout sélectionner

<?php session_start(); include('bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD // S'il y a une session alors on ne retourne plus sur cette page if (isset($_SESSION['id'])){ header('Location: index.php'); exit; } // Si la variable "$_Post" contient des informations alors on les traitre if(!empty($_POST)){ extract($_POST); $valid = true; if (isset($_POST['connexion'])){ $mail = htmlentities(strtolower(trim($mail))); $mdp = trim($mdp); if(empty($mail)){ // Vérification qu'il y ait bien un mail de renseigné $valid = false; $er_mail = "Il faut mettre un mail"; } if(empty($mdp)){ // Vérification qu'il y ait bien un mot de passe de renseigné $valid = false; $er_mdp = "Il faut mettre un mot de passe"; } // On fait une requête pour savoir si le couple mail / mot de passe existe bien car le mail est unique ! $req = $DB->query("SELECT * FROM utilisateur WHERE mail = ? AND mdp = ?", array($mail, crypt($mdp, '$6$rounds=5000$macleapersonnaliseretagardersecret$'))); // array($mail, crypt($mdp, "VOTRE CLÉ UNIQUE DE CRYPTAGE DU MOT DE PASSE"))); $req = $req->fetch(); // Si on a pas de résultat alors c'est qu'il n'y a pas d'utilisateur correspondant au couple mail / mot de passe if (!isset($req['id'])){ $valid = false; $er_mail = "Le mail ou le mot de passe est incorrecte"; }elseif($req['n_mdp'] == 1){ // On remet à zéro la demande de nouveau mot de passe s'il y a bien un couple mail / mot de passe $DB->insert("UPDATE utilisateur SET n_mdp = 0 WHERE id = ?", array($req['id'])); } // S'il y a un résultat alors on va charger la SESSION de l'utilisateur en utilisant les variables $_SESSION if ($valid){ $_SESSION['id'] = $req['id']; // id de l'utilisateur unique pour les requêtes futures $_SESSION['nom'] = $req['nom']; $_SESSION['prenom'] = $req['prenom']; $_SESSION['tel'] = $req['tel']; $_SESSION['mail'] = $req['mail']; $_SESSION['Type'] = $req['Type']; header('Location: index.php'); exit; } } } ?>
J'ai remodifié mon fichier index.php (là ou se trouve mes conditions) cela donne ça :

Code : Tout sélectionner

<?php // Permet de savoir s'il y a une session. // C'est à dire si un utilisateur c'est connecté à votre site session_start(); // Fichier PHP contenant la connexion à votre BDD include('bd/connexionDB.php'); ?> <!doctype html> <html class="no-js" lang=""> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Orthoweb</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="apple-touch-icon" href="apple-touch-icon.png"> <link rel="stylesheet" href="assets/css/bootstrap.min.css"> <!--<link rel="stylesheet" href="assets/css/bootstrap-theme.min.css">--> <!--For Plugins external css--> <link rel="stylesheet" href="assets/css/plugins.css" /> <link rel="stylesheet" href="assets/css/roboto-webfont.css" /> <!--Theme custom css --> <link rel="stylesheet" href="assets/css/style.css"> <!--Theme Responsive css--> <link rel="stylesheet" href="assets/css/responsive.css" /> <script src="assets/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script> </head> <body> <div class='preloader'><div class='loaded'>&nbsp;</div></div> <!-- Sections --> <section id="social" class="social"> <div class="container"> <!-- Example row of columns --> <div class="row"> <div class="social-wrapper"> <div class="col-md-6"> <!--On peut rajouter ici les reseaux sociaux ---> </div> <div class="col-md-6"> <div class="social-contact"> <a href="#"><i class="fa fa-phone"></i>+011 54925849</a> <a href="#"><i class="fa fa-envelope"></i>[email protected]</a> </div> </div> </div> </div> </div> <!-- /container --> </section> <nav class="navbar navbar-default"> <div class="container"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.php"></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li class="active"><a href="#">Home</a></li> <li><a href="consulter.php">Comment consulter ? </a></li> <li><a href="troubles.php">Troubles traités</a></li> <li><a href="visio.php">Télé-orthophonie</a></li> <li><a href="procedure.php">Procédure</a></li> <li><a href="contact.php">Contact</a></li> <?php if (isset($_SESSION['Type']) && $_SESSION['Type'] != '0') { //Sinon s'il y a une session alors on verra les liens ci-dessous ?> <li class="login"><a href="admin.php">Admin</a></li> <li class="login"><a href="deconnexion.php">Déconnexion</a></li> <?php }elseif(isset($_SESSION['Type']) && $_SESSION['Type'] == '0'){ //Sinon s'il y a une session alors on verra les liens ci-dessous ?> <li class="login"><a href="profil.php">Mon compte</a></li> <li class="login"><a href="deconnexion.php">Déconnexion</a></li> <?php }else{ ?> <li class="login"><a href="inscription.php">Inscription</a></li> <li class="login"><a href="connexion.php">Connexion</a></li> <?php } ?> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>

Maintenant quand je suis sur la page d'accueil je souhaite m'inscrire ou me connexion la redirection ne se fait pas je reste sur index.php x_x

Re: Condition de connexion user ou admin

Posté : 31 mai 2019, 19:12
par Hyoshiko
J'ai oublié de fermer le post ! x_x J'ai résolu mon problème ! :)