Droit de suppression

Résolu/Fermé
Utilisateur anonyme - 19 juil. 2017 à 22:20
 Utilisateur anonyme - 26 juil. 2017 à 21:00
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

miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
19 juil. 2017 à 22:35
Salut,
c'est quoi $user, d'où vient cette variable ? Tu as collé ton code en entier ?
0
Utilisateur anonyme
20 juil. 2017 à 13:22
$user c'est ça
	$requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
	$requser->execute(array($_SESSION['id']));
	$user = $requser->fetch();
0
Utilisateur anonyme
20 juil. 2017 à 00:23
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
Utilisateur anonyme
20 juil. 2017 à 13:21
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
Utilisateur anonyme
20 juil. 2017 à 18:57
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
Utilisateur anonyme > Utilisateur anonyme
26 juil. 2017 à 20:26
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
Utilisateur anonyme > Utilisateur anonyme
Modifié le 26 juil. 2017 à 20:40
$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
Utilisateur anonyme > Utilisateur anonyme
26 juil. 2017 à 21:00
Désolé pour mon inattention, merci ça fonctionne.
0