Connexion
S'inscrire
Actualités
Quoi de neuf
Activités générales
Auteurs
Forums
Nouveaux messages
Rechercher un forum
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Activités générales
Membres
Membres inscrits
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages des profils
Teams
Créé ton équipe
Quoi de neuf ?
Nouveaux messages
Rechercher un forum
Menu
Connexion
S'inscrire
Install the app
Install
Forums
Forums généraux
Informatique
Développement
#1 Espace administration | Bannir un membre
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
<blockquote data-quote="WhiiTe'" data-source="post: 6115907" data-attributes="member: 8987"><p><span style="font-size: 12px"><p style="text-align: center">Salut <img src="/images/smileys/smiley-rg.svg" class="smilie" loading="lazy" alt=":RG:" title="RG :RG:" data-shortname=":RG:" />,</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Je lance une petite série sur <strong><span style="color: #00b300">l'espace administration</span></strong> en PHP, dans ce tutoriel je vais vous apprendre à faire <strong><span style="color: #00b300">un système de bannissement</span></strong> en PHP.</p></span></p><p style="text-align: center"><span style="font-size: 12px">Pour suivre le tutoriel vous devrez soit avoir fait le système de grade, soit avoir déjà une base sur votre site avec des grades dessus.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[ATTACH=full]77831[/ATTACH]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Assez parlé, commençons <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite367" alt=":evilsmirk:" title="Evilsmirk :evilsmirk:" loading="lazy" data-shortname=":evilsmirk:" /></p></span></p><p style="text-align: center"><span style="font-size: 12px">Nous allons commencer par créer un nouveau fichier, je l'ai nommé <strong><span style="color: #00b300">admin.php</span></strong>, nommez le comme vous voulez, et vous devrez également rajouter <strong><span style="color: #00b300">une colonne "ban"</span></strong> dans la table de vos membres, mettez la en <strong><span style="color: #00b300">int</span></strong> car nous jouerons avec les <strong><span style="color: #00b300">0 et 1</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Dans cette page nous allons sécuriser la page des autres membres qui ne sont <strong><span style="color: #00b300">pas administrateur</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] session_start();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $bdd = new PDO('mysql:host=127.0.0.1;dbname=tutorg;charset=utf8', 'root', '');</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"> if(!isset($_SESSION['id']))</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: connexion.php'); # Si le membre est pas connecté, on le redirige vers la connexion.php</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"> elseif(isset($_SESSION['id']) && $_SESSION['grade'] != 'administrateur'){</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: index.php'); # Si le member est conencté, mais il est pas administrateur, on le redirige vers index.php</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Nous <strong><span style="color: #00b300">lions la base de donnée</span></strong> et mettons un <strong><span style="color: #00b300">session_start()</span></strong> pour que les variables de session soient prise en compte sur cette page, puis nous faisons la sécurisation de la page en vérifiant si la personne <strong><span style="color: #00b300">est connecté et / ou est administrateur</span></strong> sur le site.</p></span></p><p style="text-align: center"><span style="font-size: 12px">On peut aussi passer par du <strong><span style="color: #00b300">htaccess</span></strong>, mais là c'est plus rapide et plus simple.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[ATTACH=full]77831[/ATTACH]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Maintenant nous allons <strong><span style="color: #00b300">afficher les membres</span></strong>, et mettre un petit bouton pour <strong><span style="color: #00b300">bannir / dé-bannir le membre</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Il suffit de faire un simple <strong><span style="color: #00b300">foreach</span></strong>, puis afficher les informations du membre, personnellement j'afficherais uniquement le pseudo, le grade et l'email du membre.</p></span></p><p style="text-align: center"><span style="font-size: 12px">Si vous avez suivi mes tutoriels, votre table devrait s'appeler <strong><span style="color: #00b300">"membre"</span></strong>, si non, adaptez mon code pour qu'il <strong><span style="color: #00b300">fonctionne sur votre site</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] <?php</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $info = $bdd->query('SELECT * FROM membres');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> foreach($info as $info)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> ?></p></span></p><p style="text-align: center"><span style="font-size: 12px"> <p><?= $info['id']; ?>. <b><?= $info['pseudo']; ?></b> - <?= $info['mail']; ?> - <?= $info['grade']; ?> <?php if($info['ban'] == '0') { ?> <button onclick="javascript:location.href='admin.php?ban=<?= $info['id']; ?>'">Bannir</button> <?php } elseif($info['ban'] == '1') { ?> <button onclick="javascript:location.href='admin.php?unban=<?= $info['id']; ?>'">Dé-bannir</button> <?php } ?> </p></p></span></p><p style="text-align: center"><span style="font-size: 12px"> <?php</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"> ?>[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Tous les membres de votre site <strong><span style="color: #00b300">seront affichés</span></strong> sur votre page, on affiche donc les informations du membre, et on affiche <strong><span style="color: #00b300">le bouton pour bannir</span></strong> si le membre n'est pas banni (0 dans la base de donnée), et <strong><span style="color: #00b300">le bouton pour dé-bannir</span></strong> si le membre est banni (1 dans la base de donnée).</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[ATTACH=full]77831[/ATTACH]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Maintenant nous allons éditer <strong><span style="color: #00b300">le statut du membre</span></strong> dans la base de donnée selon le bouton qui a été cliqué.</p></span></p><p style="text-align: center"><span style="font-size: 12px">Niveau sécurité pour le moment c'est pas ça, mais ne vous en faîte pas on verra <strong><span style="color: #00b300">plus tard</span></strong> dans le tutoriel.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] if(!empty($_GET['ban']) && $_GET['ban'] > 0)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $id = intval(trim($_GET['ban']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $banUsers->execute(array("1", $id));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: admin.php');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Ce code est uniquement pour le bannissement, nous vérifions si ban dans l'url <strong><span style="color: #00b300">n'est pas vide</span></strong>, et est supérieur à 0, si ban dans l'url est <strong><span style="color: #00b300">une chaîne de caractère</span></strong>, il sera automatiquement transformé en chiffre, et puis nous faisons <strong><span style="color: #00b300">la requête sq</span></strong>l qui change l'état du membre dans la base de donnée, vous remarquerez que le bouton<strong><span style="color: #00b300"> bannir est devenu dé-bannir</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Voici le code pour dé-bannir le membre.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] if(!empty($_GET['unban']) && $_GET['unban'] > 0)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $id = intval(trim($_GET['unban']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $unbanUsers->execute(array("0", $id));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: admin.php');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[ATTACH=full]77831[/ATTACH]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Maintenant que l'administration est faîte, nous allons <strong><span style="color: #00b300">rediriger le membre</span></strong> vers une page d'erreur si il est banni, pour ceci je vais vous donner un bout de code que vous allez mettre dans un nouveau fichier que vous allez inclure sur toute vos page, <strong><span style="color: #00b300">c'est pas bien compliqué</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Créez un nouveau fichier et nommez le "<strong><span style="color: #00b300">config.php</span></strong>", dedans mettez le code suivant.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] if(isset($_SESSION['id']))</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $aInfo = $bdd->prepare("SELECT * FROM membres WHERE id = ?");</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $aInfo->execute(array($_SESSION['id']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $rowcPseudo = $aInfo->rowCount();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> if($rowcPseudo == 1)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $info = $aInfo->fetch();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $_SESSION['id'] = $info['id'];</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $_SESSION['pseudo'] = $info['pseudo'];</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $_SESSION['mail'] = $info['mail'];</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $_SESSION['ban'] = $info['ban'];</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $_SESSION['avatar'] = $info['avatar'];</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $_SESSION['grade'] = $info['grade'];</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Maintenant sur toute vos page vous allez rajouter une petite ligne <strong><span style="color: #00b300">pour inclure le code</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP]require "config.php";[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">C'est le même principe qu'un <strong><span style="color: #00b300">système de connexion</span></strong>, mais là c'est sans que le membre ai rien à faire, si il change de pseudo, ou d'avatar, ou si vous le bannissez, <strong><span style="color: #00b300">il n'aura pas à se reconnecter</span></strong> pour que ses informations s'actualise, et donc il sera directement redirigé vers votre page d'erreur.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Maintenant sur toute vos page excepté sur <strong><span style="color: #00b300">config.php</span></strong> et vos pages ou il n'y a pas de <span style="color: #00b300"><strong>session_start() </strong></span>nous allons mettre une petite conditions qui <strong><span style="color: #00b300">redirigera le membre</span></strong>, vous allez créer une page <strong><span style="color: #00b300">erreur.php </span></strong>et dedans mettre :</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"> session_start();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $bdd = new PDO('mysql:host=127.0.0.1;dbname=tutorg;charset=utf8', 'root', '');</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"> require "config.php";</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">if(!isset($_SESSION['id'])){</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: connexion.php'); # Si le membre est pas connecté, on le redirige vers connexion.php</p></span></p><p style="text-align: center"><span style="font-size: 12px">} elseif(isset($_SESSION['id']) && $_SESSION['ban'] == "0") {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: index.php') # Si le membre est pas banni, on le redirige vers index.php</p></span></p><p style="text-align: center"><span style="font-size: 12px">}</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Je vous laisse mettre ce que vous voulez en texte sur cette page.</p></span></p><p style="text-align: center"><span style="font-size: 12px">Et voilà <img src="/images/smileys/smiley-rg.svg" class="smilie" loading="lazy" alt=":RG:" title="RG :RG:" data-shortname=":RG:" /> vous savez maintenant comment faire <strong><span style="color: #00b300">un système de bannissement</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[ATTACH=full]77831[/ATTACH]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Avant de terminer ce tutoriel je vais vous expliquer comment corriger <strong><span style="color: #00b300">la faille crsf</span></strong>, j'ai deux méthodes pour ça.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Première méthode : <strong><span style="color: #00b300">Vous rajoutez une checkbox </span></strong>à cocher obligatoirement à chaque fois que vous voulez bannir un membre, et dans les conditions pour éditer l'état du membre (0 ou 1) <strong><span style="color: #00b300">vous vérifiez si on a cette checkbox</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[HTML]<form method="POST"><input type="checkbox" name="secure"></form>[/HTML]</p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] if(!empty($_GET['ban']) && $_GET['ban'] > 0 && isset($_POST['secure']))</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $id = intval(trim($_GET['ban']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $banUsers->execute(array("1", $id));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: admin.php');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"> if(!empty($_GET['unban']) && $_GET['unban'] > 0 && isset($_POST['secure']))</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $id = intval(trim($_GET['unban']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $unbanUsers->execute(array("0", $id));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: admin.php');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Tout simplement.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Deuxième méthode : Vous rajoutez une petite condition qui vérifie <strong><span style="color: #00b300">si l'action vient de votre site</span></strong> dans les conditions pour modifier l'état du membre. (0 ou 1)</p></span></p><p style="text-align: center"><span style="font-size: 12px">Si vous êtes en local, mettez <strong><span style="color: #00b300">localhost</span></strong>.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Cette conditions est :</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] if(strpos($_SERVER['HTTP_REFERER'], "votresite.com") == FALSE)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> exit();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Et sur les conditions de ce tutoriel, ça donne :</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">[PHP] if(!empty($_GET['ban']) && $_GET['ban'] > 0)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> if(strpos($_SERVER['HTTP_REFERER'], "votresite.com") == FALSE)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> exit();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"> $id = intval(trim($_GET['ban']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $banUsers->execute(array("1", $id));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: admin.php');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"> if(!empty($_GET['unban']) && $_GET['unban'] > 0)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> if(strpos($_SERVER['HTTP_REFERER'], "votresite.com") == FALSE)</p></span></p><p style="text-align: center"><span style="font-size: 12px"> {</p></span></p><p style="text-align: center"><span style="font-size: 12px"> exit();</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $id = intval(trim($_GET['unban']));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> $unbanUsers->execute(array("0", $id));</p></span></p><p style="text-align: center"><span style="font-size: 12px"> header('Location: admin.php');</p></span></p><p style="text-align: center"><span style="font-size: 12px"> }[/PHP]</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px">Et voilà <img src="/images/smileys/smiley-rg.svg" class="smilie" loading="lazy" alt=":RG:" title="RG :RG:" data-shortname=":RG:" /> c'est la fin de ce tutoriel, si vous avez <strong><span style="color: #00b300">des questions ou des problèmes</span></strong> avec le tutoriel, n'hésitez pas à me le dire.</p></span></p><p style="text-align: center"><span style="font-size: 12px">Prochain tutoriel : Modifier les informations des utilisateurs.</p></span></p><p style="text-align: center"><span style="font-size: 12px"></p></span></p><p style="text-align: center"><span style="font-size: 12px"><img src="/data/assets/smilies/tchuss.gif" class="smilie" loading="lazy" alt=":tchuss:" title="Tchuss :tchuss:" data-shortname=":tchuss:" /></p><p></span></p></blockquote><p></p>
[QUOTE="WhiiTe', post: 6115907, member: 8987"] [SIZE=3][CENTER]Salut :RG:, Je lance une petite série sur [B][COLOR=#00b300]l'espace administration[/COLOR][/B] en PHP, dans ce tutoriel je vais vous apprendre à faire [B][COLOR=#00b300]un système de bannissement[/COLOR][/B] en PHP. Pour suivre le tutoriel vous devrez soit avoir fait le système de grade, soit avoir déjà une base sur votre site avec des grades dessus. [ATTACH=full]77831[/ATTACH] Assez parlé, commençons :evilsmirk: Nous allons commencer par créer un nouveau fichier, je l'ai nommé [B][COLOR=#00b300]admin.php[/COLOR][/B], nommez le comme vous voulez, et vous devrez également rajouter [B][COLOR=#00b300]une colonne "ban"[/COLOR][/B] dans la table de vos membres, mettez la en [B][COLOR=#00b300]int[/COLOR][/B] car nous jouerons avec les [B][COLOR=#00b300]0 et 1[/COLOR][/B]. Dans cette page nous allons sécuriser la page des autres membres qui ne sont [B][COLOR=#00b300]pas administrateur[/COLOR][/B]. [PHP] session_start(); $bdd = new PDO('mysql:host=127.0.0.1;dbname=tutorg;charset=utf8', 'root', ''); if(!isset($_SESSION['id'])) { header('Location: connexion.php'); # Si le membre est pas connecté, on le redirige vers la connexion.php } elseif(isset($_SESSION['id']) && $_SESSION['grade'] != 'administrateur'){ header('Location: index.php'); # Si le member est conencté, mais il est pas administrateur, on le redirige vers index.php }[/PHP] Nous [B][COLOR=#00b300]lions la base de donnée[/COLOR][/B] et mettons un [B][COLOR=#00b300]session_start()[/COLOR][/B] pour que les variables de session soient prise en compte sur cette page, puis nous faisons la sécurisation de la page en vérifiant si la personne [B][COLOR=#00b300]est connecté et / ou est administrateur[/COLOR][/B] sur le site. On peut aussi passer par du [B][COLOR=#00b300]htaccess[/COLOR][/B], mais là c'est plus rapide et plus simple. [ATTACH=full]77831[/ATTACH] Maintenant nous allons [B][COLOR=#00b300]afficher les membres[/COLOR][/B], et mettre un petit bouton pour [B][COLOR=#00b300]bannir / dé-bannir le membre[/COLOR][/B]. Il suffit de faire un simple [B][COLOR=#00b300]foreach[/COLOR][/B], puis afficher les informations du membre, personnellement j'afficherais uniquement le pseudo, le grade et l'email du membre. Si vous avez suivi mes tutoriels, votre table devrait s'appeler [B][COLOR=#00b300]"membre"[/COLOR][/B], si non, adaptez mon code pour qu'il [B][COLOR=#00b300]fonctionne sur votre site[/COLOR][/B]. [PHP] <?php $info = $bdd->query('SELECT * FROM membres'); foreach($info as $info) { ?> <p><?= $info['id']; ?>. <b><?= $info['pseudo']; ?></b> - <?= $info['mail']; ?> - <?= $info['grade']; ?> <?php if($info['ban'] == '0') { ?> <button onclick="javascript:location.href='admin.php?ban=<?= $info['id']; ?>'">Bannir</button> <?php } elseif($info['ban'] == '1') { ?> <button onclick="javascript:location.href='admin.php?unban=<?= $info['id']; ?>'">Dé-bannir</button> <?php } ?> </p> <?php } ?>[/PHP] Tous les membres de votre site [B][COLOR=#00b300]seront affichés[/COLOR][/B] sur votre page, on affiche donc les informations du membre, et on affiche [B][COLOR=#00b300]le bouton pour bannir[/COLOR][/B] si le membre n'est pas banni (0 dans la base de donnée), et [B][COLOR=#00b300]le bouton pour dé-bannir[/COLOR][/B] si le membre est banni (1 dans la base de donnée). [ATTACH=full]77831[/ATTACH] Maintenant nous allons éditer [B][COLOR=#00b300]le statut du membre[/COLOR][/B] dans la base de donnée selon le bouton qui a été cliqué. Niveau sécurité pour le moment c'est pas ça, mais ne vous en faîte pas on verra [B][COLOR=#00b300]plus tard[/COLOR][/B] dans le tutoriel. [PHP] if(!empty($_GET['ban']) && $_GET['ban'] > 0) { $id = intval(trim($_GET['ban'])); $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?'); $banUsers->execute(array("1", $id)); header('Location: admin.php'); }[/PHP] Ce code est uniquement pour le bannissement, nous vérifions si ban dans l'url [B][COLOR=#00b300]n'est pas vide[/COLOR][/B], et est supérieur à 0, si ban dans l'url est [B][COLOR=#00b300]une chaîne de caractère[/COLOR][/B], il sera automatiquement transformé en chiffre, et puis nous faisons [B][COLOR=#00b300]la requête sq[/COLOR][/B]l qui change l'état du membre dans la base de donnée, vous remarquerez que le bouton[B][COLOR=#00b300] bannir est devenu dé-bannir[/COLOR][/B]. Voici le code pour dé-bannir le membre. [PHP] if(!empty($_GET['unban']) && $_GET['unban'] > 0) { $id = intval(trim($_GET['unban'])); $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?'); $unbanUsers->execute(array("0", $id)); header('Location: admin.php'); }[/PHP] [ATTACH=full]77831[/ATTACH] Maintenant que l'administration est faîte, nous allons [B][COLOR=#00b300]rediriger le membre[/COLOR][/B] vers une page d'erreur si il est banni, pour ceci je vais vous donner un bout de code que vous allez mettre dans un nouveau fichier que vous allez inclure sur toute vos page, [B][COLOR=#00b300]c'est pas bien compliqué[/COLOR][/B]. Créez un nouveau fichier et nommez le "[B][COLOR=#00b300]config.php[/COLOR][/B]", dedans mettez le code suivant. [PHP] if(isset($_SESSION['id'])) { $aInfo = $bdd->prepare("SELECT * FROM membres WHERE id = ?"); $aInfo->execute(array($_SESSION['id'])); $rowcPseudo = $aInfo->rowCount(); if($rowcPseudo == 1) { $info = $aInfo->fetch(); $_SESSION['id'] = $info['id']; $_SESSION['pseudo'] = $info['pseudo']; $_SESSION['mail'] = $info['mail']; $_SESSION['ban'] = $info['ban']; $_SESSION['avatar'] = $info['avatar']; $_SESSION['grade'] = $info['grade']; } }[/PHP] Maintenant sur toute vos page vous allez rajouter une petite ligne [B][COLOR=#00b300]pour inclure le code[/COLOR][/B]. [PHP]require "config.php";[/PHP] C'est le même principe qu'un [B][COLOR=#00b300]système de connexion[/COLOR][/B], mais là c'est sans que le membre ai rien à faire, si il change de pseudo, ou d'avatar, ou si vous le bannissez, [B][COLOR=#00b300]il n'aura pas à se reconnecter[/COLOR][/B] pour que ses informations s'actualise, et donc il sera directement redirigé vers votre page d'erreur. Maintenant sur toute vos page excepté sur [B][COLOR=#00b300]config.php[/COLOR][/B] et vos pages ou il n'y a pas de [COLOR=#00b300][B]session_start() [/B][/COLOR]nous allons mettre une petite conditions qui [B][COLOR=#00b300]redirigera le membre[/COLOR][/B], vous allez créer une page [B][COLOR=#00b300]erreur.php [/COLOR][/B]et dedans mettre : [PHP] session_start(); $bdd = new PDO('mysql:host=127.0.0.1;dbname=tutorg;charset=utf8', 'root', ''); require "config.php"; if(!isset($_SESSION['id'])){ header('Location: connexion.php'); # Si le membre est pas connecté, on le redirige vers connexion.php } elseif(isset($_SESSION['id']) && $_SESSION['ban'] == "0") { header('Location: index.php') # Si le membre est pas banni, on le redirige vers index.php } [/PHP] Je vous laisse mettre ce que vous voulez en texte sur cette page. Et voilà :RG: vous savez maintenant comment faire [B][COLOR=#00b300]un système de bannissement[/COLOR][/B]. [ATTACH=full]77831[/ATTACH] Avant de terminer ce tutoriel je vais vous expliquer comment corriger [B][COLOR=#00b300]la faille crsf[/COLOR][/B], j'ai deux méthodes pour ça. Première méthode : [B][COLOR=#00b300]Vous rajoutez une checkbox [/COLOR][/B]à cocher obligatoirement à chaque fois que vous voulez bannir un membre, et dans les conditions pour éditer l'état du membre (0 ou 1) [B][COLOR=#00b300]vous vérifiez si on a cette checkbox[/COLOR][/B]. [HTML]<form method="POST"><input type="checkbox" name="secure"></form>[/HTML] [PHP] if(!empty($_GET['ban']) && $_GET['ban'] > 0 && isset($_POST['secure'])) { $id = intval(trim($_GET['ban'])); $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?'); $banUsers->execute(array("1", $id)); header('Location: admin.php'); } if(!empty($_GET['unban']) && $_GET['unban'] > 0 && isset($_POST['secure'])) { $id = intval(trim($_GET['unban'])); $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?'); $unbanUsers->execute(array("0", $id)); header('Location: admin.php'); }[/PHP] Tout simplement. Deuxième méthode : Vous rajoutez une petite condition qui vérifie [B][COLOR=#00b300]si l'action vient de votre site[/COLOR][/B] dans les conditions pour modifier l'état du membre. (0 ou 1) Si vous êtes en local, mettez [B][COLOR=#00b300]localhost[/COLOR][/B]. Cette conditions est : [PHP] if(strpos($_SERVER['HTTP_REFERER'], "votresite.com") == FALSE) { exit(); }[/PHP] Et sur les conditions de ce tutoriel, ça donne : [PHP] if(!empty($_GET['ban']) && $_GET['ban'] > 0) { if(strpos($_SERVER['HTTP_REFERER'], "votresite.com") == FALSE) { exit(); } $id = intval(trim($_GET['ban'])); $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?'); $banUsers->execute(array("1", $id)); header('Location: admin.php'); } if(!empty($_GET['unban']) && $_GET['unban'] > 0) { if(strpos($_SERVER['HTTP_REFERER'], "votresite.com") == FALSE) { exit(); } $id = intval(trim($_GET['unban'])); $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?'); $unbanUsers->execute(array("0", $id)); header('Location: admin.php'); }[/PHP] Et voilà :RG: c'est la fin de ce tutoriel, si vous avez [B][COLOR=#00b300]des questions ou des problèmes[/COLOR][/B] avec le tutoriel, n'hésitez pas à me le dire. Prochain tutoriel : Modifier les informations des utilisateurs. :tchuss:[/CENTER][/SIZE] [/QUOTE]
Insérer les citations…
Vérification
Publier la réponse
Forums
Forums généraux
Informatique
Développement
#1 Espace administration | Bannir un membre
Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
Acceptez
En savoir plus.…
Haut