Droit de suppression

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Voila j'essaye actuellement de donner le droit à l'utilisateur qui à son compte de supprimer ses données, seulement lui, malheureusement je peux supprimer d'autre utilisateur en modifiant l'ID dans l'url.

	if(isset($_SESSION['id']) AND $user['id'] == $_SESSION['id'])
	{
		if(isset($_GET['erase']) AND !empty($_GET['erase']))
		{
			$erase = (int) $_GET['erase'];
			
			$req = $bdd->prepare('DELETE FROM membres WHERE id = ?');
			$req->execute(array($erase));
		}
	}
	else
	{
		
	}


<p class="login button">
<input type="submit" class="login button" value="Sauvegarder"></input>
<td><a href="?erase=<?php echo $_SESSION['id']; ?>" onclick="return confirm(\'Etes-vous sûr ?\');"><input type="button" class="login button" value="Delete account"></input></a></td>
</p>

2 réponses

  1. miramaze Messages postés 1429 Date d'inscription   Statut Contributeur Dernière intervention   92
     
    Salut,
    c'est quoi $user, d'où vient cette variable ? Tu as collé ton code en entier ?
    0
    1. Utilisateur anonyme
       
      $user c'est ça
      	$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
      	$requser->execute(array($_SESSION['id']));
      	$user = $requser->fetch();
      
      0
  2. Utilisateur anonyme
     
    Bonjour

    Tu crées un lien avec
    <a href="?erase=<?php echo $_SESSION['id']; ?>" 

    puis tu l'exploites avec
    $erase = (int) $_GET['erase'];

    Puisque ton utilisateur est connecté et a son id dans une variable de session, à quoi cela sert-il de passer cet identifiant par l'url ?
    Dispense-toi de mettre l'id dans le lien et fais directement :
    $erase=(int)$_SESSION['id'];
    0
    1. Utilisateur anonyme
       
      Salut, en faisant comme tu me dit, donc en enlevant du lien le $_SESSION['id']
      href="?erase"
      juste avec ça, cela ne me fais rien, normal ?
      0
    2. Utilisateur anonyme
       
      Si tu as laissé le test empty($_GET['erase'], normal que ça ne fasse rien, puis qu'il n'y a rien dans erase.
      Tu peux mettre
      ?erase=nimportequoi
      ou bien te passer de vérifier si $_GET['erase'] est vide
      0
      1. Utilisateur anonyme > Utilisateur anonyme
         
        Salut, désolé mais je n'ai toujours pas réussi :
        	if(isset($_GET['erase']))
        	{
        		$req = $bdd->prepare('DELETE FROM membres WHERE id = ?');
        		$req->execute(array($_GET['erase']));
        	}
        

        <p class="login button">
            <input type="submit" class="login button" value="Sauvegarder"></input>
            <td><a href="?erase" rel="nofollow noopener noreferrer" target="_blank" onclick="return confirm(\'Etes-vous sûr ?\');"><input type="button" class="login button" value="Delete account"></input></a></td>
        </p>
        
        0
      2. Utilisateur anonyme > Utilisateur anonyme
         
        $req->execute(array($_GET['erase']));

        Ce n'est pas ce que je t'ai dit. Il n'y a plus rien dans $_GET['erase'], comment veux-tu que ça marche ?
        Puisque tu as besoin à cet endroit de l'id de l'utilisateur, et que tu disposes de cet id dans $_SESSION['id'], c'est $_SESSION['id'] qu'il faut utiliser.
        0
      3. Utilisateur anonyme > Utilisateur anonyme
         
        Désolé pour mon inattention, merci ça fonctionne.
        0