Créer un espace Admin

joris1904

joris1904 Le 28 mai 2016 à 17:53 (Édité le 25 janvier 2019 à 17:51)

Bonjour sa fait plusieurs jour que je cherche comment créer un espace Admin sans succès  (je possède déjà un espace membre que j'ai créer en suivant le code de @PrimFx )

j'ai créer dans ma basse un champ role en int (3) par default il est sur le 1
 
1= membre
2=modo
3=admin

après sa je sais pas quoi mètre
si quelqu'un peut m'aide
Merci d'avance
Ranarxhag

Ranarxhag Le 28 mai 2016 à 20:22

Hey !

Moi je procède de la maniere suivante :

Lors de la connexion, je crée une variable de session contenant le chiffre qui se trouve dans ton champ rôle de ta base de donnée.

Ensuite, pour chaque page admin, je vérifie en tout premier lieu si la variable de session rôle existe. Si elle n'existe pas le membre n'est donc pas connecté et je le re dirige vers la page d'accueil avec un petit message. Je vérifie également si la variable de session est égale à 3 (dans ton cas). Si elle ne l'est pas le type n'est pas admin et pareil, je le re dirige vers la page d'accueil.

Si ça a pu t'aider .. 😀
joris1904

joris1904 Le 28 mai 2016 à 20:57

@Ranarxhag ok mais je sais pas quelle code mettre -_- 
Ranarxhag

Ranarxhag Le 29 mai 2016 à 10:15 (Édité le 29 mai 2016 à 10:17)

Oui m'enfin, c'est la base ça !

if(!isset($_SESSION['role']) OR $_SESSION['role'] != 3) 
{
   $_SESSION['accessdenied'] = "Vous n'avez pas l'autorisation d'accéder à cette page";

   header('Location: '); // La page où tu veux rediriger le membre
   exit(); // Afin que la suite du code ne s'exécute pas
}
Ensuite, dans la page où il est redirigé, tu mets ça :

if(isset($_SESSION['accessdenied'])
{
   echo $_SESSION['accessdenied']; // Tu peux rajouter des div etc pour l'affichage évidemment
}
unset($_SESSION['accessdenied']; // Pour supprimer la variable de SESSION
Bon évidemment, pour l'affichage, il y a plus simple mais si tu n'en a qu'un, c'est bon 😀 
joris1904

joris1904 Le 29 mai 2016 à 17:28

<?php
        session_start();

        require_once('php/config.php'); /* Mes fonctions */

        include_once('views/cookieconnect.php');

        if(isset($_POST['formconnexion'])) {
            $mailconnect = htmlspecialchars($_POST['mailconnect']);
            $mdpconnect = sha1($_POST['mdpconnect']);
            if(!empty($mailconnect) AND !empty($mdpconnect)) {
                $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
                $requser->execute(array($mailconnect, $mdpconnect));
                $userexist = $requser->rowCount();
                if($userexist == 1) {
                    if(isset($_POST['rememberme'])){
                        setcookie('email',$mailconnect,time()+365*24*3600,null,null,false,true);
                        setcookie('password',$mdpconnect,time()+365*24*3600,null,null,false,true);

                    }
                    if(!isset($_SESSION['role']) OR $_SESSION['role'] != 3)
                    {
                        $_SESSION['accessdenied'] = "Vous n'avez pas l'autorisation d'accéder à cette page";

                        header("Location:denied.php"); // La page où tu veux rediriger le membre
                        exit(); // Afin que la suite du code ne s'exécute pas
                    }
                    $userinfo = $requser->fetch();
                    $_SESSION['id'] = $userinfo['id'];
                    $_SESSION['pseudo'] = $userinfo['pseudo'];
                    $_SESSION['mail'] = $userinfo['mail'];
                    header("Location: profil.php?id=".$_SESSION['id']);
                } else {
                    $erreur = "Mauvais mail ou mot de passe !";
                }
            } else {
                $erreur = "Tous les champs doivent être complétés !";
            }
        }
        ?>

        <html>
        <head>
            <title>Connexion | Joris Vidéo</title>
            <meta charset="utf-8">
        </head>
        <body>
        <div align="center">
            <h2>Connexion</h2>
            <br /><br />
            <form method="POST" action="">
                <input type="email" name="mailconnect" placeholder="Mail" />
                <input type="password" name="mdpconnect" placeholder="Mot de passe" />
                <br /><br />
                <input type="checkbox" name="rememberme" id="remembercheckbox" /><label for="remembercheckbox">Se souvenir de moi</label>
                <br /><br />
                <input type="submit" name="formconnexion" value="Se connecter !" />
                <a href="recuperation.php" class="button style2">Mot de passe oublié</a>
            </form>
            <?php
            if(isset($erreur)) {
                echo '<font color="red">'.$erreur."</font>";
            }
            ?>
        </div>
        </body>
        </html></h1>
</header>
j'ai mis sa mais je sais pas trop comment m'y prendre -_- 😭
Ranarxhag

Ranarxhag Le 30 mai 2016 à 00:01 (Édité le 30 mai 2016 à 00:08)

Bon, alors bouge ce que je t'ai mis de ce code et copie-colle ce que je te mets :

<?php
        session_start();
        require_once('php/config.php'); /* Mes fonctions */
        include_once('views/cookieconnect.php');
        if(isset($_POST['formconnexion'])) {
            $mailconnect = htmlspecialchars($_POST['mailconnect']);
            $mdpconnect = sha1($_POST['mdpconnect']);
            if(!empty($mailconnect) AND !empty($mdpconnect)) {
                $requser = $bdd->prepare("SELECT * FROM membres WHERE mail = ? AND motdepasse = ?");
                $requser->execute(array($mailconnect, $mdpconnect));
                $userexist = $requser->rowCount();
                if($userexist == 1) {
                    if(isset($_POST['rememberme'])){
                        setcookie('email',$mailconnect,time()+365*24*3600,null,null,false,true);
                        setcookie('password',$mdpconnect,time()+365*24*3600,null,null,false,true);
                    }
                    $userinfo = $requser->fetch();
                    $_SESSION['id'] = $userinfo['id'];
                    $_SESSION['pseudo'] = $userinfo['pseudo'];
                    $_SESSION['mail'] = $userinfo['mail'];
                    $_SESSION['role'] = $userinfo['role'];
                    header("Location: profil.php?id=".$_SESSION['id']);
                } else {
                    $erreur = "Mauvais mail ou mot de passe !";
                }
            } else {
                $erreur = "Tous les champs doivent être complétés !";
            }
        }
        ?>
        <html>
        <head>
            <title>Connexion | Joris Vidéo</title>
            <meta charset="utf-8">
        </head>
        <body>
        <div align="center">
            <h2>Connexion</h2>
            <br /><br />
            <form method="POST" action="">
                <input type="email" name="mailconnect" placeholder="Mail" />
                <input type="password" name="mdpconnect" placeholder="Mot de passe" />
                <br /><br />
                <input type="checkbox" name="rememberme" id="remembercheckbox" /><label for="remembercheckbox">Se souvenir de moi</label>
                <br /><br />
                <input type="submit" name="formconnexion" value="Se connecter !" />
                <a href="recuperation.php" class="button style2">Mot de passe oublié</a>
            </form>
            <?php
            if(isset($erreur)) {
                echo '<font color="red">'.$erreur."</font>";
            }
            ?>
        </div>
        </body>
        </html>
Tu verras que la seule chose que j'ai fait, c'est de dégager le bout de code que je t'ai donné car il n'a rien à faire là et rajouter une variable de session rôle lors de la connexion.

Ensuite, sur les pages admin que tu vas créer par la suite, tu mettras cette vérification en haut.

Donc imaginons.. La personne s'est connectée.

Ensuite, elle veut se rendre sur la page admin-accueil.php (par exemple)

Eh bien, c'est sur cette page-là que tu vas mettre en premier lieu (après le session_start) le bout de code qui permet de vérifier si la personne est admin ou pas.

J'espère que je suis claire dans mes explications sinon hésite pas à demander encore.. 😄
WhiiTe

WhiiTe Le 31 mai 2016 à 16:31

BeKidding

BeKidding Le 2 juin 2016 à 16:24

Sinon , tu peux aussi créer une table admin , comme ca les comptes sites seront séparés des comptes admins.
Un peu plus simple mais plus chiant si l'admin a 1 compte admin & un compte site car les infos seront séparées ou tu devra dire a ton php d'update en même temps l'utilisateurs et l'admin si il modifie ses infos
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte