Supprimer un compte PHP

Sh0kaP1k

Sh0kaP1k Le 30 mars 2016 à 17:33 (Édité le 25 janvier 2019 à 17:50)

Bonjour ou bonsoir,

J'ai un espace membre sur mon site et j'aimerai que quand la personne clique sur "Supprimer mon compte" cela l'amene vers une autre page ou il devra cocher une case de confirmation et valider pour que son compte soit supprimer de la bdd.

Merci de votre aide 😀
Rudelle65

Rudelle65 Le 30 mars 2016 à 17:43

tu peut Supprimer ton compte par phpmyadmin
Sh0kaP1k

Sh0kaP1k Le 30 mars 2016 à 17:44

Je sais mais je veux que ce soit un utilisateur qui puisse le supprimer
Rudelle65

Rudelle65 Le 30 mars 2016 à 17:45

ok
quiqou55

quiqou55 Le 30 mars 2016 à 19:24 (Édité le 31 mars 2016 à 00:18)

Il suffit de créer un lien vers une page php comme par exemple supprimer_compte.php?id=userid et ensuite dans ton fichier tu peut utiliser la requete sql DELETE : 
<?php
   $id = $_GET['id'];
   $bdd = new PDO("mysql:dbname=******;host=******;charset=utf8")
   $bdd->prepare("DELETE FROM membres WHERE id = ?")->execute( array($id) );
   
   $redirect_url = "/";
   header("Location: {$redirect_url}");
   exit;
TheFlameflo

TheFlameflo Le 30 mars 2016 à 21:26

Ce que quiqou55 a proposé, c'est vraiment pas mal, mais si tu veux qu'il puisse le faire seul, il faudra l'adapter comme ça :
$bdd = new PDO("mysql:dbname=******;host=******;charset=
   $bdd->prepare("DELETE FROM membres WHERE id = ?")->execute( array($_SESSION['id']) );   

Il ne te reste qu'à l'adapter selon tes besoins.
PrimFX

PrimFX Le 30 mars 2016 à 22:34

Très bonnes réponses de @quiqou55 et @TheFlameflo 😀
J'ajouterai qu'il serait bien de proposer également une étape de confirmation de suppression du compte, histoire de ne pas supprimer de compte par erreur x) et que si tu as par exemple un système de commentaires sur ton site, il faudra penser à gérer les comptes supprimés (affichage d'un message style "Compte supprimé" à la place du pseudo, avatar par défaut, etc.) 😉
M69-74

M69-74 Le 31 mars 2016 à 10:06

Bonjour, je ne comprend pas ce qui a été fait et je voudrais faire la meme chose ..
TheFlameflo

TheFlameflo Le 31 mars 2016 à 12:49

En gros Marius, c'est pour que l'utilisateur se supprime lui-même.
Alors, je te conseille de créer un lien "Supprime ton compte !" et d'y inclure ça :
$bdd = new PDO("mysql:dbname=******;host=******;charset=
$bdd->prepare("DELETE FROM membres WHERE id = ?")->execute( array($_SESSION['id']) );   
La première ligne, c'est le connexion à la base de données et la deuxième la requête qui supprime le compte.
Par contre, je te propose d'adapter le système pour voir si l'utilisateur est connecté et le plus important est de mettre un système de confirmation avant de supprimer le compte !

M69-74

M69-74 Le 31 mars 2016 à 14:12 (Édité le 31 mars 2016 à 14:21)

Oki, merci, je croyais qu'il fallait autre chose ; j'ai fait le système de confirmation déjà. Merci 😄 Le compte est bien supprimé, mais comment puis-je faire pour que, quand l'utilisateur essaye de se connecter, cela me marque : compte supprimé ? Sachant que si une personne s'inscrit et se connecte pour la première mais avec de mauvais identifiants, cela me marque mon erreur : identifiants erronés. Et je voudrais que quand on supprime et qu'on se reconnecte après, sa mette en erreur : Compte supprime.
Voila, merci de votre aide !
Sh0kaP1k

Sh0kaP1k Le 31 mars 2016 à 17:40 (Édité le 31 mars 2016 à 17:41)

Ok merci beaucoup a vous trois 😀
TheFlameflo

TheFlameflo Le 31 mars 2016 à 21:21

En fait, si tu décides d'afficher "Compte supprimé", il y a plusieurs choses que tu dois faire :
Faire de nouvelles vérifications à la connexion
Ajouter une "case" dans ta bdd avec supprimé ou non.

Mais si tu y tiens, tu dois faire le test à la connexion voir si le compte est supprimé avant de faire la connexion et si c'est le cas, NE PAS le connecter mais afficher le message.
Je crois t'avoir mis sur une piste qui pourrait marcher, te reste plus qu'à créer le système !
Nobodief

Nobodief Le 1 avril 2016 à 13:18 (Édité le 1 avril 2016 à 13:21)

Tu pourrais faire encore mieux pour éviter les problèmes et le bordel dans tes colonnes :

  • Tu ne supprime pas les comptes, mais tu peux créer une colonne status qui défini l'état du compte (0 = non activé / 1 = activé / 2 = sans-propriétaire).
  • Lors de l'inscription de l'utilisateur tu vérifie par ordre (Asc) tous les comptes qui sont sans propriétaire et s'il y'en à tu fait une update à la place de l'insert pour qu'un nouvel utilisateur prennent le compte sans propriétaire en réinitialisant bien-sur les anciennes valeurs du compte. (Cela t'évite de passer d'un identifiant 11 à 90, comme sa tu gardera toujours un ordre d'identifiant croissant (1,2,3,4,5,6,7), si jamais il n'y à pas de compte sans propriétaire tu fait une insert.
  • Pense aussi éventuellement à intégrer un système de dernière connexion avec une date, pour vérifier si le compte est bel est bien inactif et qu'il ne s'agit pas d'un problème de champ, comme sa si un problème est rencontré (par exemple un compte utilisateur qui n'est pas sans propriétaire et qui à été actif récemment, mais qu'il l'est dans la base de donnée tu fait une update du compte concerné pour rétablir le bug).
Sh0kaP1k

Sh0kaP1k Le 1 avril 2016 à 19:25 (Édité le 1 avril 2016 à 20:08)

<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="" />
<!--[if lte IE 7]>
<link rel="stylesheet" href="style_ie.css" />
<![endif]-->
        <title>Supprimer Compte</title>
    </head>
    <body>
            <?php
            $sup="SUPPRIMER";
            session_start();
            if(isset($_SESSION['id']))
            {
                    if(isset($_POST['valider']))
                    {
                if(($_POST['confirmer']) == $sup)
                {
                       $id = $_GET['id'];
                       $bdd = new PDO("mysql:dbname=*****;host=127.0.0.1;charset=utf8");
                       $bdd->prepare("DELETE FROM espace_membre WHERE id = ?")->execute( array($id) );               
                       
                       header("Location: *****.php");
                       exit;
                }
                else
                {
                    ?>
                        <p id="erreur">Veillez écrire SUPPRIMER dans le champ de texte pour supprimer votre compte</p>
                    <?php
                }
                    }
            }   
            else
            {
                header("Location: *****.php");
            }
            ?>
                <form method="POST" action="">
                    <input type="text" id="confirmer" name="confirmer" />
                    <input type="submit" value="Confirmer" name="velider" />
                </form>
    </body>
</html>


Ce code ne marche pas HELP !
Nobodief

Nobodief Le 2 avril 2016 à 00:25 (Édité le 2 avril 2016 à 02:05)

Prenez l'habitude de créer vos accès à la base de données dans un dossier protéger avec un htaccess, puis faites en l'appel dans vos pages avec un require_once et la session_start() se place toujours en début de page. :
<?php    
     $hostname   = "localhost";
    $databaseuser  = "root";
    $databasepassword    = "";
    $database   = "nom de la base de données";

    $bdd = new PDO('mysql:host='.$hostname.';dbname='.$database.'', ''.$databaseuser.'', ''.$databasepassword.'');
     $bdd->exec("SET CHARACTER SET utf8");
?>


<?php session_start();
require_once('database.php');
?>
<html> 
    <head> 
        <meta charset="utf-8" /> 
        <link rel="stylesheet" href="" /> 
<!--[if lte IE 7]> 
<link rel="stylesheet" href="style_ie.css" /> 
<![endif]--> 
        <title>Supprimer Compte</title> 
    </head> 
    <body> 
            <?php 
            $sup="SUPPRIMER"; 
         
            if(isset($_SESSION['id'])) { 
                if(isset($_POST['valider'])) { 
                    if($_POST['confirmer'] == $sup) { 
                       $id = $_GET['id']; 
                       $supression = $bdd->prepare("DELETE FROM espace_membre WHERE id = ?");
                  $supression->execute(array($id));                                       
                       header("Location: *****.php"); 
                       exit; 
                    } else {
                  $erreur = '<p id="erreur">Vous devez écrire SUPPRIMER !</p>';
               }
                } else { 
                $erreur = '<p id="erreur">Veillez écrire SUPPRIMER dans le champ de texte pour supprimer votre compte</p>';  
            }
         } else {
            header('Location: ***.php')
         }
            ?> 
                <?php if(isset($erreur)) { echo $erreur; } ?>
            <form method="POST" action=""> 
                    <input type="text" id="confirmer" name="confirmer" /> 
                    <input type="submit" value="Confirmer" name="velider" /> 
                </form> 
    </body> 
</html> 
Sh0kaP1k

Sh0kaP1k Le 2 avril 2016 à 23:36 (Édité le 2 avril 2016 à 23:36)

J'en suis à là et toujours bloqué:

<?php session_start();
?>
<html> 
    <head> 
        <meta charset="utf-8" /> 
        <link rel="stylesheet" href="" /> 
<!--[if lte IE 7]> 
<link rel="stylesheet" href="style_ie.css" /> 
<![endif]--> 
        <title>Supprimer Compte</title> 
    </head> 
    <body> 
            <?php                   
                      
            if(isset($_SESSION['id'])) { 
                if(isset($_POST['valider'])) { 
                    if($_POST['confirmer'] == "SUPPRIMER") { 
                       $bdd = new PDO("mysql:dbname=studentseeker;host=127.0.0.1;charset=utf8"); 
                       $bdd->prepare("DELETE FROM espace_membre WHERE id = ?")->execute( array($id) );
                       header("Location: studentseeker.php"); 
                       exit;
                    } else {
                  $erreur = '<p id="erreur">Vous devez écrire SUPPRIMER !</p>';
               }
                } else { 
                $erreur = '<p id="erreur">Veillez écrire SUPPRIMER dans le champ de texte pour supprimer votre compte</p>';  
            }
         } else {
            header('Location: studentseeker.php');
         }
            ?> 
                <?php if(isset($erreur)) { echo $erreur; } ?>
                        <form method="POST" action=""> 
                            <input type="text" id="confirmer" name="confirmer" /> 
                            <input type="submit" value="Confirmer" name="valider" /> 
                        </form> 
    </body> 
</html> 
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte