IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

bannissement d'un membre [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut bannissement d'un membre
    Bonjour à tous et à toutes,

    Je suis actuellement sur le développement d'un forum, et je bloque sur un petit soucis :/ je souhaiterai ajouter la possibilité d'empêcher la connexion à une membre banni,

    je possède deux pages de code pour la connexion au site,
    J'aimerais placé cette phrase de code, mais après plusieurs tentative je ne vois pas ou la placé :/

    la phrase de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ($d['membre_rang'] == 0) //Le membre est banni
        {
            echo '<p>'."Vous avez été banni, impossible de vous connecter sur ce forum".'</p>';
        }
        else //Sinon c'est ok, on se connecte
        {
         }
    voici ma page connexion avec la phrase de code que j'ai essayé d'inclure mais qui ne fonctionne pas :/ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    <?php 
    session_start();
     
     
    if(isset($_POST['connexion'])){
            $FormValid = true;
            if(empty($_POST['membre_pseudo']) || empty($_POST['membre_mdp'])){
                    $FormValid = false;
                    // si les champs pseudo & pass sont vide on renvoi une indication.
                    $Notification = array('Class'=>'Error','Content'=>'<p class="textewarning">'."Tous les champs doivent être rempli.".'</p>');
            } else {
                    // Sinon, on traite les informations
                    $Pseudo=($_POST['membre_pseudo']);
                    $Password=($_POST['membre_mdp']);
                    if(strlen($Pseudo) < 3){
                            // si le pseudo contient moins de 3 caractères -> formulaire incorrect.
                            $FormValid = false;
                            $Notification = array('Class'=>'Error','Content'=>'<p class="textewarning">'."Le pseudo doit contenir plus de 3 caractères.".'</p>');
                    }
                    if(strlen($Pseudo) > 150){
                            // si le pseudo contient plus de 150 caractères -> formulaire incorrect.
                            $FormValid = false;
                            $Notification = array('Class'=>'Error','Content'=>'<p class="textewarning">'."Le pseudo doit contenir moins de 150 caractères.".'</p>');
                    }
                    if(strlen($Password) < 3){
                            // si le Password contient moins de 3 caractères -> formulaire incorrect.
                            $FormValid = false;
                            $Notification = array('Class'=>'Error','Content'=>'<p class="textewarning">'."Le Password doit contenir plus de 3 caractères.".'</p>');
                    }
                    if(strlen($Password) > 150){
                            // si le Password contient plus de 150 caractères -> formulaire incorrect.
                            $FormValid = false;
                            $Notification = array('Class'=>'Error','Content'=>'<p class="textewarning">'."Le Password doit contenir moins de 150 caractères.".'</p>');
                    }
                    // autres traitement de tes données..
     
                    if($FormValid){
                    // si les informations sont correct
                    require_once("connexioninscription.inc.php");
                    $req = $bdd->prepare('SELECT membre_id, membre_pseudo, membre_rang FROM membres WHERE membre_pseudo=:membre_pseudo AND membre_mdp=:membre_mdp AND membre_rang=:membre_rang');
                    $req->execute(array('membre_pseudo'=>$Pseudo,'membre_mdp'=>$Password));
                    $d = $req->fetch(PDO::FETCH_OBJ);
                    $req->closeCursor();
    				  if ($d['membre_rang'] == 0) //Le membre est banni
        {
            echo '<p>'."Vous avez été banni, impossible de vous connecter sur ce forum".'</p>';
        }
        else //Sinon c'est ok, on se connecte
        {
                    if($d!=1){
    // si le résultat est différent de 1, on retourne une indocation.
    $Notification = array('Class'=>'Error','Content'=>'<p class="texteerror">'."Les identifiants sont faux.".'</p>');
    } 
    else 
    {
     
    $_SESSION['membre_id'] = $d->membre_id;
    $_SESSION['membre_pseudo']= $d->membre_pseudo;
    $_SESSION['membre_rang']=$d->membre_rang;
     
                    }
     
                    } // end FormValid
            } // end !empty membre_pseudo ou membre_mdp
    } // end isset post connexion
    }
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <link rel="shortcut icon" title="connexion" type="image/png" href="mafavicon.png" />
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="description" content="Connectez-vous."/>
    <title>Connexion / Connectez-vous</title>
    <link href="css1.css" rel="stylesheet" type="text/css">
    <?php require_once("connexioninscription.inc.php"); ?>
    <?php include("debut.php"); ?>
    </head>
    <body>
    <div id="container">
    <?php include("header.inc.php"); ?>
    <?php include("menus.inc.php"); ?>
     <div id="corpsconnexion">
     <div id="retourselect">
     <a href="connexion.php" title="recharger la page"><h1 class="titre1">Connexion</h1></a>
     </div>
     <div id="cadreformins">
    <?php if(isset($Notification)){ echo $Notification['Content'];}?>
    <?php
    if(isset($_SESSION['membre_id']))
    {
    ?>
     
    <?php
    echo '<p class="textevalide">'."Vous êtes connecté !".'</p>';
    echo  '<a href="voirprofil.php?action=consulter" title="consulter votre profil"><h1 class="titre1">'."Consulter votre profil".'</h1></a>';
    echo  '<a href="voirprofil.php?action=modifier" title="modifier votre profil"><h1 class="titre1">'."Modifier votre profil".'</h1></a>';
    }
     
    else
    {
    ?>
    <p class="texte3">Connectez-vous à Crobara2bal</p>
    <form method="post" name="connexion" action="connexion.php" enctype="multipart/form-data">
    <fieldset>
    <div id="classinscr">
    <p class="classinscr"><label>Nom d'utilisateur :
    <input type="text" name="membre_pseudo" />
    </label>
    </p>
    </div>
    <div id="classinscr">
    <p class="classinscr">
    <label>Mot de passe :
    <input type="password" name="membre_mdp" />
    </label>
    </p>
    </div>
    <p class="classinscr">
    <label>
    <input type="submit" name="connexion" value="connexion" />
    </label>
    </p>
    </fieldset>
    </form>
    <?php
    echo '<p class="textewarning">'."Vous n'êtes pas connécté.".'</p>';
    }
    ?>
    </div>
    </div>
    <?php include("footer.inc.php"); ?>
    </div>
    </body>
    </html>
    et voici ma page connexionvalide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <?php session_start(); ?>
    <?php if (empty($_SESSION['membre_id']))
    {
        /* il faut que toutes les variables du formulaires existent*/
    if(isset($_POST['membre_pseudo']) && isset($_POST['membre_mdp']))
    {
        /*il faut que tous les champs soient renseignes*/
    if($_POST['membre_pseudo']!="" && $_POST['membre_mdp']!="")
    {
        /*connexion a la BDD*/
    require_once("connexioninscription.inc.php");
     
        /*on crypte le mot de passe pour faire le test*/
    $passhache =($_POST['membre_mdp']);
     
        /* on verifie qu'un membre a bien ce pseudo et ce mot de passe*/
    $req = $bdd->prepare('SELECT * FROM membres WHERE membre_pseudo=:membre_pseudo AND membre_mdp=:membre_mdp');
    $req->execute(array('membre_pseudo'=> $_POST['membre_pseudo'], 'membre_mdp'=> $passhache));
    $resultat=$req->fetch();
     
    /*si il n'y a pas de resultats, on renvoie a la page de connexion*/
    if(!$resultat)
    {
    header('Location: connexion.php');
    }
    else
    {
     
    session_start();
    $_SESSION['membre_id']= $resultat['membre_id'];
    $_SESSION['membre_pseudo']= $pseudo;
    $_SESSION['membre_mail']= $resultat['membre_mail'];
     
    header('Location: connexion.php');
    } ?>
    <!DOCTYPE HTML>
    <html>
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="description" content="Connectez-vous."/>
    <title>Connexion / Connectez-vous</title>
    <link rel="shortcut icon" title="connexion" type="image/png" href="mafavicon.png" />
    <link href="css1.css" rel="stylesheet" type="text/css">
    </head>
     
    <body>
    <div id="container">
     
    <?php include("header.inc.php"); ?>
    <?php include("menus.inc.php"); ?>
     <div id="corpsconnexion">
     <div id="retourselect">
     <a href="connexion.php" title="recharger la page"><h1 class="titre1">Connexion</h1></a>
     </div>
     
    </div>
      <?php
    }
    else
    {
    echo '<span class="texteerror">'."Il faut remplir tous les champs".'</span>';
    }
    }
    else
    {
    echo '<span class="texteerror">'."Une erreur s'est produite".'</span>';
    }
    }
    else
    {
    echo '<span class="textewarning">'."Vous êtes déjà connecté".'</span>';
    }
    ?>
     
     
    <?php include("footer.inc.php");?>
     
    </div>
     
    </body>
    </html>
    Merci pour votre attention et votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne comprends pas ce que ce sont les deux codes que tu nous montres.
    Ils sont presques identiques.

    Concernant le deuxième, dans ta requête tu as mis un argument de trop : membre_rang=:membre_rangTu inclus également deux fois connexioninscription.inc.php.

    Pense a activer les erreurs PDO quand tu debug.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Juste une remarque de fond, dans le message, je n'afficherais pas le fait qu'il a été banni. Juste "Impossible de vous connecter sur ce forum".

    Si tu lui dis qu'il a été banni, il va râler, créer un autre compte et venir te casser encore plus les pieds.

    Si tu ne lui dis pas, il aura un doute et risque de te foutre la paix (en pensant qu'il a oublié son mot de passe par exemple)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 149
    Par défaut
    Bonjour à vous et merci pour votre attention ,

    effectivement :/, si je me souviens bien, j'avais effectué ce système ( en 2 pages ) pour les redirections ^^.
    j'ai supprimé require_once en trop ^^' et membre_rang=:membre_rang

    une erreur apparaît :/
    Fatal error: Cannot use object of type stdClass as array in /home/xxxxxxx/public_html/connexion.php on line 43
    ma ligne 43 correspondant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if ($d['membre_rang'] == 0) //Le membre est banni
        {
    Merci du bon conseil ram je modifie cette formulation de suite ^^.

    Merci pour votre aide, vraiment ^^.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu ne differencies plus les deux cas, tu as juste besoin d'ajouter une condition membre_rang <> 0 dans ta requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ($d['membre_rang'] == 0) //Le membre est banni
        {
    c'est plutôt un tableau d'objets que tu dois récupérer et puis autant tester si ton tableau d'objets est vide ou non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                    $d = $req->fetch(PDO::FETCH_OBJ);
    if($d!==false){
    if ($d->membre_rang == 0) //Le membre est banni
        {
    //membre banni
    }else{//membre non banni
    //mise en session des des données et connexion du membre
    }else{//les identifiants de connexions ne sont pas valides
    //identifiants incorrects
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/07/2008, 13h27
  2. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo