Supprimer compte php BDD/mysql

Résolu
Bonjour,

Je tient un petit site internet, un membre m'a dis qu'il voulais supprimer son compte mais qu'il n'y a pas de bouton "Supprimer son compte". Alors j'ai créer une page nomais destroy.php mais je n'ai pas trouver le code a insérer dedans, quel est le code SVP. merci d'avance

<[config]>(supprimé par la modération)[</config>]

24 réponses

Résumé de la discussion

Le sujet concerne la création d'une page destroy.php pour supprimer un compte utilisateur via PHP et trouver le code nécessaire pour effectuer la suppression en pratique. Plusieurs réponses indiquent l'absence d'une fonction PHP native de suppression et privilégient une étape SQL Delete basée sur l'identifiant en session, tout en soulignant les risques de sécurité. D'autres interventions illustrent des essais avec des manipulations de sessions et des tests qui révèlent le flux d'informations sensibles, incitant à privilégier des pratiques sécurisées et authentification. Une nuance utile montre qu'une mise en œuvre pratique peut nécessiter une vérification des droits et une prévention des fuites, plutôt qu'une suppression directe sans confirmation.

Bobot (l’IA à votre service)
  1. merci beaucoup, vraiment vous m'avez beaucoup aidez, j'essaierez de vous rendre la pareile :)
    1. essaie maintenant ca

      <?php
      
      ini_set("error_reporting", 1);
      session_start(); 
      
      // remplace les acces
      $mysqli_connection = new MySQLi('localhost', 'user', 'pass', 'db');
      
      //rapport
      if($mysqli_connection->connect_error){
      echo "Non connecte";
      }
      else{
      
      //operation
      $sql="Delete from users where username='".$_SESSION['username']."'";
      $mysqli->query($sql) ? $message="supprime" : $message="non supprime";
      echo $message;
      
      }
      
      
      ?>
      1. alors: C'est bien
        users 
        le noms de la table. Les champs:

        id ; username ; password ; email ; avatar ; signup_date
        1. ok donc c'est la requête, donnes moi exactement (et fait très attention) tous les champs qui composent la table users, et regarde bien si la table s'appelle users (avec s) ou user (sans s)
          1. d'accord, donc soit on ne se connecte pas a la bdd soit la requette est fausse, on essaie de voir si la connexion marche bien, tu vide le tous et met ca et dis moi ce que ca donne:

            <?php

            ini_set("error_reporting", 1);

            // remplace les acces
            $mysqli_connection = new MySQLi('localhost', 'user', 'pass', 'db');

            //rapport
            if($mysqli_connection->connect_error){
            echo "Non connecte";
            }
            else{
            echo "Connecte";
            }

            ?>
            1. ok maintenant tu supprime tous et tu met ça et dis moi ce que ça donne ( tu modifie les accès)

              <?php

              ini_set("error_reporting", 1);
              session_start();

              //ouvrir une connexion, tu remplaces par les accès
              $mysqli = new mysqli("localhost", "nomuser", "password", "nombdd");

              // effectuer l'operation
              $sql="Delete from users where username=".$_SESSION['username'];
              $mysqli->query($sql) ? $message="supprime" : $message="non supprime";
              echo $message;

              //fermer la connexion
              mysqli_close();

              ?>
              1. ok on va aller doucement, dans ta page tu supprime tous et tu tapes:

                <?php

                session_start();

                print_r($_SESSION);

                ?>

                et dis moi ce que ça donne
                1. ne fais pas un copier coller brute, il faut que tu remplace

                  "nomuser" par l'utilisateur de la BDD
                  "password" par le mot de passe de la bdd
                  "nombdd" le nom de la BDD

                  et aussi localhost si ta base est hebergé separaiment

                  apres tu teste
                  1. essaie avec ca

                    <?php
                    
                    //ouvrir une connexion, tu remplaces par les accès
                    $mysqli = new mysqli("localhost", "nomuser", "password", "nombdd");
                    
                    //tester la connexion
                    if (mysqli_connect_errno()) {
                        printf("Echec de la connexion : %s\n", mysqli_connect_error());
                        exit();
                    }
                    
                    // effectuer l'operation
                    $mysqli->query("Delete from users where username=".$_SESSION['username']);
                    
                    //fermer la connexion
                    mysqli_close();
                    
                    ?>
                    1. non a mince sa donnerais plutôt ça:

                      Delete from users where username=' <?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>' 
                      1. Donc sa marcherais ça ?

                        
                        
                        
                        Delete from users where login=' <?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>' 
                        1. Delete from users where login='loginasupprimer'

                          ou bien

                          Delete from users where id='idasupprimer'
                          1. J'ai trouver ça c'est un code valide ?
                            <?php
                            DELETE [LOW_PRIORITY] FROM Nom_table  
                            [WHERE where_definition] [LIMIT rows] 
                            ?>
                            • 1
                            • 2