PHP/MySQL: Drop Username impossible

MacGaliver Messages postés 146 Date d'inscription vendredi 28 mai 2010 Statut Membre Dernière intervention 21 juillet 2013 - 15 août 2012 à 16:32
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 21 août 2012 à 21:40
Bonjour à toutes et à tous,

Voilà j'ai un petit problème quand j’exécute mon code suivant:

<?php
include "../config.php"; // pas de soucis ici
$user = $_GET["username"]; // pas ici non plus -- recup variable get
mysql_query('DELETE FROM users WHERE username="$user"'); // sûrement ici
?>


En effet il s'exécute, mais ne supprime pas ce que je veux et aucun message d'erreur.

Merci d'avance.

3 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 août 2012 à 23:38
<?php
require_once('../config.php');
$user = mysql_real_escape_string($_GET['username']);
mysql_query("DELETE FROM users WHERE username='$user'");
?>

Je crois que MySQL n'apprécie pas trop les doubles guillemets...
De plus, fais très attention aux injections SQL !

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
16 août 2012 à 22:35
Salut,

Je crois que MySQL n'apprécie pas trop les doubles guillemets...

9.1.1. String Literals
A string is a sequence of bytes or characters, enclosed within either single quote (“'”) or double quote (“"”) characters.


@MacGaliver : je te propose de tester la valeur de retour de mysql_query() et, si elle est strictement égale à false, d'appeler mysql_error() afin d'avoir plus de détails sur pourquoi ça n'a pas fonctionné.

Soit dit en passant, tu ne devrais pas utiliser les fonction mysql_*, leur usage est fortement déconseillés. Tu devrais prendre une des alternatives proposées dans la documentation.
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
21 août 2012 à 21:40
Re,

Je viens de relire le sujet et le motif du problème m'a sauté aux yeux ! Je n'avais pas du tout fais gaffe aux quotes que tu avais utilisé... et c'était bien le problème : PHP ne fais pas l'expansion des variables dans les chaînes en simple quotes (d'où le fait que je les utilise dès que je n'ai pas d'expansion à faire). Afin de te montrer quelques exemples :

<?php

$toto = 'foo';
var_dump($toto); // string(3) "foo"                                                                                                                          
var_dump('$toto'); // string(5)	"$toto"                                                                                                                      
var_dump("$toto"); // string(3)	"foo"


Donc dans ton cas, c'était $user qui était utilisé comme username et non la valeur de la variable $user, d'où le fait que tu ne trouves jamais rien.

Je terminerais en te donnant un peu de lecture au sujet de la sécurité de ton code : PHP, MySQL Et La Sécurité.
0
Rejoignez-nous