PHP - Supprimer un compte utilisateur

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par gcvoiron, 31 Mars 2006.

  1. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Bonjour, je possède un site où des membres peuvent s'enregister. J'ai un "espace admin" où je peux gérer les membres, où entre autre je peux les supprimer. J'aimerais mettre un bouton dans les sessions des membres pour qu'ils puissent eux mêmes supprimer leur compte. Vous trouverez ci-dessous, les codes des pages qui me servent à supprimer un utilisateur. Quelqu'un saurait me dire comment réaliser ceci, à l'aide des codes ci-dessous? Merci.

    Première page, où un champ me demande l'email, puis il faut cliquer sur supprimer.
    Code:
    <?
    include("../templates/admin-header.txt");
    ?>
    <center><table border="0" bordercolor="#00FF00">
                  <tr>
                    <td rowspan="6" width="483" valign="top">
                      <div align="left">
    
                        <form name="form1" method="post" action="userloschen2.php">
                          <table width="70%" border="0" align="center">
                            <tr>
                              <td width="50%">E-mail de l'utilisateur </td>
                              <td width="77%">
                                <input type="text" name="email" size="20" maxlength="50">
                              </td>
                            </tr>
                            <tr>
                              <td colspan="2">
                                <div align="center">
                                  <input type="submit" name="Submit" value="Supprimer">
                                </div>
                              </td>
                            </tr>
                          </table>
                        </form>
                        <p align="center">&nbsp;</p>
        </div>
                    </td>
                  </tr>
                </table></center>
    

    Seconde page, où un message de confirmation apparait pour dire que le membre a bien été supprimé.
    Code:
    <?
    include("header.inc.php");
    ?>
    <?
    global $email;
            $query="DELETE FROM demo_a_accounts WHERE email='$email'";
            mysql_query($query);
    ?>
    <?
    include("../templates/admin-header.txt");
    ?>
    <center>
      L'utilisateur avec l'adresse e-mail  <?php echo "$email"; ?> a &eacute;t&eacute; supprim&eacute; de la base de donn&eacute;e.
    </center>
     
  2. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Tu veux faire la suppression juste en donnant un email? N'importe qui pourra supprimer un compte comme ça?

    Le global $email; dans le second script ne sert à rien.

    Le
    "DELETE FROM demo_a_accounts WHERE email='$email'";
    devrait plus être :
    "DELETE FROM demo_a_accounts WHERE email='".$_POST['email']."'";
    Ca évitera déjà quelques problèmes.

    Sinon à mon avis il faut revoir le fonctionnement car ça me parrait un peu bancal.
     
  3. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Bonjour, merci de votre réponse. En fait je veux que chaque utilisateur puisse supprimer son compte à partir de son espace membre et c'est pour ça que je cherche comment faire pour qu'ils puissent supprimer que leur compte, et pas ceux des autres...
     
  4. Bacteries
    Bacteries WRInaute passionné
    Inscrit:
    27 Mai 2004
    Messages:
    1 253
    J'aime reçus:
    0
    Tu dois avoir un identifiant non?

    Tu fais un bouton supprimer avec un lien du genre :
    me_supprimer.php?id=<l'id de ton membre>

    Dans me_supprimer.php tu vérfie que c'est bien la bonne personne (par rapport à celle connectée), si oui tu la supprimes.

    Par contre attention si ces membres ont posté des messages ou autre ça peut foutre le bordel (tout dépend comment c'est codé).
     
  5. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    addslashes($_POST['email']) serait un peu mieux même mais vu que c'est pour son propre compte, mieux vaut passer par les ID.

    Et pour éviter de "foutre le bordel" dans ta base de données, assure-toi de bien comprendre chaque ligne de la page 'userloschen2.php' avant d'en faire une adapté pour tes membres (=> sauvegarde de la base de donnée et tests en local hautement recommandés ;)).
     
  6. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Ben en fait je n'y connais absolument rien en PHP donc je pensais mettre un bouton "Supprimer mon compte" et lorsque qu'un membre appuie sur ce bouton, un script supprime l'email de l'utilisateur de la base de donnée (comme je peux le faire à partir de l'espace administrateur). Et comme ça, il n'y a pas de risque pour qu'un utilisateur supprime autre que son compte. Lorsque l'on rentre dans l'espace membre, un code PHP indique l'email de l'utilisateur, il dit "echo $num3;". Puis-je réaliser la supprssion à partir de cela? Merci.
     
  7. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Le fichier "userloschen 2" a le code suivant :
    Code:
    <?
    include("header.inc.php");
    ?>
    <?
    global $email;
            $query="DELETE FROM demo_a_accounts WHERE email='$email'";
            mysql_query($query);
    ?>
    <center>
      L'utilisateur avec l'adresse e-mail  <?php echo "$email"; ?> a &eacute;t&eacute; supprim&eacute; de la base de donn&eacute;e.
    </center>
    Comment faire pour "stocker" la valeur "echo $num3;" dans la valeur "$email" pour que sur une page de l'espace membre, la valeur "echo $num3;" (email du membre) soit stocké dans "$email" , puis qu'en cliquant sur un lien, la page userloschen 2 s'ouvre et réalise la suppression???
     
  8. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    C'est bon, j'y suis arrivé, voilà comment j'ai fais :
    Dans l'espace membre, en cliquant sur "Editer votre compte", j'ai ajouté un bouton "Supprimer" pour supprimer le compte :

    Code:
    <p align="center" class="Style44">
    <span style="font-family: verdana; font-size: 14px; font-weight: bold">
    <u>Supprimer mon compte (recup&eacute;ration impossible) : </u></span></p>
    <table border="0" bordercolor="#00FF00">
    <tr>
    <td rowspan="6" width="483" valign="top"><div align="left">
    <form name="form1" method="post" action="../compte-supprime.php">
    <table width="70%" border="0" align="center">
    <tr>
    <td width="50%">&nbsp;</td>
    <td width="77%"><input name="email" type="hidden" value="<?php echo $row3[3]; ?>" size="20" maxlength="50">                          </td>
    </tr>
    <tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="Submit" value="Supprimer">
    </div></td>
    </tr>
    </table>
    </form>
    <p align="center">&nbsp;</p>
    </div></td>
    </tr>
    </table>
    Si le membre clique sur le bouton, une page s'ouvre pour lui dire que son compte a été supprimé, voici le code :

    <?
    include("admin/header.inc.php");
    ?>
    <?
    global $email;
    $query="DELETE FROM demo_a_accounts WHERE email='$email'";
    mysql_query($query);
    ?>

    <p align="center" class="Style44"><u>Compte supprim&eacute;e </u></p>
    <blockquote>
    <p align="center" class="Style46 Style37"><strong>L'utilisateur avec l'adresse e-mail <?php echo "$email"; ?> a &eacute;t&eacute; supprim&eacute; de la base de donn&eacute;e.</strong></p>
    </blockquote>
    <p class="Style46 Style37">&nbsp;</p>
     
  9. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    "J'ai ajouté : c'est du passé composé ?
    ...tu n'as pas peur toi :D

    Déjà $email ne devrait rien retourner normalement, s'il retourne quelque chose, c'est que ton serveur à de fortes chances de presenter des failles de sécurité (mais c'est une autre histoire).

    Ensuite ton script est à retirer tout de suite de ton site. Je sais pas le nombre de visiteurs que tu as mais un jour ou l'autre la faille est toujours découverte. Imagine qu'un membre modifie le champ email par le tiens : il supprime ton compte. Et maintenant, plus dangeureux encore, il modifie le champs email par ' OR 1 OR email='
    =>
    "DELETE FROM demo_a_accounts WHERE email='' OR 1 OR email=''"; (<=> SUPRIMME DE demo_a_accounts QUAND email est vide OU toujours OU email est vide)
    =>
    Tu n'aura plus aucun membre...

    donc à la place de
    $query="DELETE FROM demo_a_accounts WHERE email='$email'";
    tu devrais mettre ca normalement :
    $query='DELETE FROM demo_a_accounts WHERE email=\''.addslashes($_POST['email']).'\'';

    et même plus, tu devrais trouver un moyen d'identifier chaque personne sans passer par un champ de formulaire. (fait voir le code php de header.inc.php si tu veux je regarderai)


    .
     
  10. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Bonjour, en fait l'utilisateur ne peux pas changer l'email du compte à modifier, il est inscrit dans un champ de texte masqué. Il peux juste cliquer sur "Supprimer", ce qui entraîne la suppression de son compte... Je ne vois pas comment un utilisateur peut donc supprimer le compte d'un autre, puisque qu'il n'a pas à rentrer d'email mais seulement à cliquer sur un bouton. Dîtes le moi si je me trompe, merci d'avance.
     
  11. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    :D tu te trompe mais rassure toi, tu n'es pas le premier à faire cette erreur ;)

    tout ce qui est envoyé par le navigateur du client est modifiable par le client. Je le sais très bien car je dévelloppe plusieurs programme en c# qui utilisent ces possibiltés ;) (mais nul besoin de programmer pour le faire, un novice peut très bien copier ta page de formulaire sur un autre site et la modifier de là bas en appelant http://www.example.net/compte-supprime.php
     
  12. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Ok, mais que me conseillez-vous de faire?
     
  13. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
     
  14. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Dans header.inc.php, il y a juste cela :
    <?php
    $db = mysql_pconnect("********", "********", "****");
    mysql_select_db("********",$db);
    ?>
     
  15. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    bizzare, alors par mp (ca sera plus simple) la page "Editer votre compte"
     
  16. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    D'après ce que j'ai vu en mp, ca donnerai alors ca :
    Code:
    <?php
    include("header.inc.php");
    mysql_query("DELETE FROM demo_a_accounts WHERE id='$userid'") or die('erreur avec mysql');
    
    //idéalement, il faudrait executer ici le script de déconnexion pour eviter que la personne reste connecté alors que son compte n'existe plus.
    ?>
    
    <p align="center" class="Style44"><u>Compte supprim&eacute;e </u></p>
    <blockquote>
    <p align="center" class="Style46 Style37"><strong>Votre compte a bien &eacute;t&eacute; supprim&eacute; de la base de donn&eacute;e.</strong></p>
    </blockquote>
    <p class="Style46 Style37">&nbsp;</p
    (header.inc.php serait alors different de admin/header.inc.php ?)
     
  17. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Merci, je vais essayer, et je vous tiens au courant!
     
  18. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Mais en fait, avec votre code, comment l'utilisateur fait pour surpprimer sa session? Il n'y bouton, ni lien...
     
  19. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    comme avant mais ce qui est en rougen'est plus utile :
    ou directement un lien vers :
    "../compte-supprime.php"
     
  20. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Donc dans ma page "Editer votre compte", je mets :
    Code:
    <p align="center" class="Style44"> 
    <span style="font-family: verdana; font-size: 14px; font-weight: bold"> 
    <u>Supprimer mon compte (recup&eacute;ration impossible) : </u></span></p> 
    <table border="0" bordercolor="#00FF00"> 
    <tr> 
    <td rowspan="6" width="483" valign="top"><div align="left"> 
    <form name="form1" method="post" action="../compte-supprime.php"> 
    <table width="70%" border="0" align="center"> 
    <tr> 
    <td width="50%">&nbsp;</td> 
    <td width="77%"> </td> 
    </tr> 
    <tr> 
    <td colspan="2"><div align="center"> 
    <input type="submit" name="Submit" value="Supprimer"> 
    </div></td> 
    </tr> 
    </table> 
    </form> 
    <p align="center">&nbsp;</p> 
    </div></td> 
    </tr> 
    </table>
    Et dans compte-supprime.php, je mets ce qu'il y a ci-dessous?
    Code:
    <?php 
    include("header.inc.php"); 
    mysql_query("DELETE FROM demo_a_accounts WHERE id='$userid'") or die('erreur avec mysql'); 
    
    //idéalement, il faudrait executer ici le script de déconnexion pour eviter que la personne reste connecté alors que son compte n'existe plus. 
    ?> 
    
    <p align="center" class="Style44"><u>Compte supprim&eacute;e </u></p> 
    <blockquote> 
    <p align="center" class="Style46 Style37"><strong>Votre compte a bien &eacute;t&eacute; supprim&eacute; de la base de donn&eacute;e.</strong></p> 
    </blockquote> 
    <p class="Style46 Style37">&nbsp;</p>
     
  21. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Bonjour, ça ne marche pas au niveau du fichier "Editer votre compte". Etant donné que j'ai supprimé la ligne "<input name="email" type="hidden" value="<?php echo $row3[3]; ?>" size="20" maxlength="50">", il ne sait pas quel email faut supprimer... La page de confirmation s'ouvre correctement mais le compte n'est pas supprimé.
     
  22. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    Change ca alors :
    et mets compte-supprime.php dans le même dossier que dans celui de la page "Editer votre compte"
     
  23. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Ca ne marche toujours pas. Mais lorsque j'arrive sur la page qui doit supprimer le compte, compte-supprime.php, comment cette page sait quel compte il faut supprimer?
     
  24. gomoz
    gomoz WRInaute discret
    Inscrit:
    29 Décembre 2004
    Messages:
    224
    J'aime reçus:
    0
    Ce que j'ai compris dans le fichier que tu m'a passé c'est que $userid était defini dans header.inc.php (celui qui est dans le même dossier que cette page et pas le même que admin/header.inc.php).

    A la limite montre-moi le header.inc.php en question mais comme je crois pas à la magie et que sur ton fichier, il appel $userid dès les premieres lignes et qu'il n'est pas defini, il ne peut l'etre que dans le seul fichier inclus avant, càd header.inc.php. :)
     
  25. gcvoiron
    gcvoiron WRInaute occasionnel
    Inscrit:
    19 Octobre 2005
    Messages:
    459
    J'aime reçus:
    0
    Par mesure de sécuritée, il faut une confirmation que c'est bien l'utilisateur du compte qui supprime son compte. J'ai donc fait le CODE ci-dessous, mais il ne marche pas. Sauriez-vous m'expliquer pourquoi? Merci.

    Page supprimer.php, là où on demande l'email et le mot de passe :

    Code:
    <form method="post" action="supprimer-ok.php">
    <blockquote>
    <p><span class="Style44">
    <input name="sid" type="hidden" id="sid" value="<?php echo $sid; ?>">
    </span> </p>
    </blockquote>
    <table width="400" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
    <input name="passneu" type="text" size="30">
    </TR>
    <tr>
    <input name="emailneu" type="text" size="30">
    </TR>
    <blockquote><p><center>
    <input name="submit" type="submit" value="Supprimer mon compte">
    </center></p></blockquote>
    </form>
    Page supprimer-ok.php, qui doit réaliser la suppression :

    Code:
    <?php
    require('../header.inc.php');
    
    if ( isset($_POST) && (!empty($_POST['passneu'])) && (!empty($_POST['emailneu'])) ) {
    
      extract($_POST);  
    
      $sql = "SELECT password FROM demo_a_accounts WHERE email = '".addslashes($emailneu)."'";
      $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
      
    
      if (mysql_num_rows($req) > 0) {
         $data = mysql_fetch_assoc($req);
        
    
        if ($passneu == $data['password']) {
          $suppression = true;
        }
      }
    }
    
    
    if ($suppression) {
    	require('../prepend.inc.php');
    	$requete = "delete from demo_a_accounts where email=emailneu";
    
    }
    else {
      echo 'Une erreur est survenue, veuillez r&eacute;essayer !'; 
    }
    ?>
     
Chargement...
Similar Threads - PHP Supprimer compte Forum Date
Galère pour supprimer index.php URL Rewriting et .htaccess 12 Août 2020
Supprimer des membres en PHP Développement d'un site Web ou d'une appli mobile 23 Juillet 2013
Supprimer l'extension .php et rendre accessible .php ? URL Rewriting et .htaccess 16 Juillet 2013
Comment supprimer les liens hypertextes avec php ? Développement d'un site Web ou d'une appli mobile 30 Octobre 2011
Php : supprimer les retours chariots. Développement d'un site Web ou d'une appli mobile 25 Novembre 2010
1&1 mutualisé : aide optimisation + supprimer affichage erreur php URL Rewriting et .htaccess 15 Juin 2010
supprimer une tache cron avec un php appelé par cron Administration d'un site Web 25 Août 2009
Rewrite : supprimer l'extension .php URL Rewriting et .htaccess 2 Février 2009
comment supprimer http://www. et .etc en php Développement d'un site Web ou d'une appli mobile 6 Janvier 2009
Supprimer une partie d'une table dans phpmyadmin Développement d'un site Web ou d'une appli mobile 19 Août 2008
Supprimer les commentaires sur rewriteyourphpannuaire Développement d'un site Web ou d'une appli mobile 15 Février 2008
Supprimer cookie et session php Développement d'un site Web ou d'une appli mobile 20 Janvier 2008
est il possible de supprimer une image d'un dossier en php ? Développement d'un site Web ou d'une appli mobile 31 Octobre 2007
Supprimer PHPSESSID dans URL URL Rewriting et .htaccess 27 Septembre 2007
Ajouter le PHPSESSID a l'url et pas le supprimer Développement d'un site Web ou d'une appli mobile 22 Juin 2007
Supprimer index.php pour garder uniquement le domaine URL Rewriting et .htaccess 11 Mai 2007
Aide pour supprimer un noeud XML, PHP 5, DOM [RESOLU] Développement d'un site Web ou d'une appli mobile 2 Mai 2007
[php] Supprimer une entré de tableau si mot detecté Développement d'un site Web ou d'une appli mobile 22 Mars 2007
PHP Supprimer les données d'une table. Développement d'un site Web ou d'une appli mobile 14 Janvier 2007
Tableau en PHP: Supprimer un ou plusieurs élément(s) Développement d'un site Web ou d'une appli mobile 28 Mai 2006