Page 1 sur 1
Rajout de slash ou pas
Posté : 29 oct. 2008, 13:13
par TiFred
Bonjour,
J'ai une fonction
function AjoutSlash($chaine)
{if ( !get_magic_quotes_gpc() ) $chaine = addslashes($chaine) ;
return $chaine ;
}
qui m'affiche ça lorsque je fais un echo d'une requette sur mon ordi
SELECT * FROM jeu1_palmares WHERE saison='6' and joueur='' and (type like 'Champ. E%' or type='Coupe d\'Espagne') ORDER BY type
mais qui m'affiche ça sur mon site
SELECT * FROM jeu1_palmares WHERE saison='6' and joueur='' and (type like 'Champ. E%' or type='Coupe d'Espagne') ORDER BY type
Qq'un peut-il me dire pourquoi ?
Merci
Posté : 04 nov. 2008, 15:03
par TiFred
Salut,
Qq'un a-t-il une idée ?
Merci
Posté : 04 nov. 2008, 15:17
par AB
Et elle intervient où cette fonction dans ta requête ? C'est quoi le code intermédiaire ?
Posté : 04 nov. 2008, 18:37
par TiFred
Voilà un bout du code :
$req2 = Envoierequette($db,"SELECT * FROM jeu1_pays") ;
while($data = mysqli_fetch_assoc($req2))
{$pays2 = $data[@pays] ; $text = $data[@text] ;
echo "<tr><td><b>$pays2</b></td><td>" ;
echo"<br />SELECT * FROM jeu1_palmares WHERE saison='".$i."' and joueur='' and (type like 'Champ. ".substr($pays2,0,1)."%' or type='Coupe ".AjoutSlash($text)."') ORDER BY type" ;
$req3 = Envoierequette($db,"SELECT * FROM jeu1_palmares WHERE saison='".$i."' and joueur='' and (type like 'Champ. ".substr($pays2,0,1)."%' or type='Coupe ".AjoutSlash($text)."') ORDER BY type") ;
Merci
Posté : 04 nov. 2008, 18:43
par albat
Plutôt que de bricoler une fonction ajoutslash() (même si ça part d'un bon sentiment),
il me paraît plus sûr d'utiliser la fonction mysql_real_escape_string()
Posté : 04 nov. 2008, 19:05
par orgerix
Sauf que mysql_real_escape_string() ne regarde pas si la chaine est déjà échappé ou pas. Si magic_quote est activé, on se retrouve avec 3 slashes au lieu d'un seul.
Posté : 04 nov. 2008, 19:22
par albat
Si tu as la main sur ton serveur (le php.ini, tout au moins), désactive cette option
sinon, ceci devrait faire l'affaire :
ini_set('magic_quote_gpc', FALSE);
Posté : 04 nov. 2008, 20:32
par AB
Sauf que mysql_real_escape_string() ne regarde pas si la chaine est déjà échappé ou pas. Si magic_quote est activé, on se retrouve avec 3 slashes au lieu d'un seul.
Oui, mais outre la solution d'albat on peut alors utiliser stripslashes (si magic quote est activé) et ensuite mysql_real_escape_string()
Un exemple d'utilisation dans le code php de ce tuto
http://www.phpfrance.com/forums/voir_sujet-242539.php
Posté : 07 nov. 2008, 16:49
par TiFred
Si tu as la main sur ton serveur (le php.ini, tout au moins), désactive cette option
sinon, ceci devrait faire l'affaire :
ini_set('magic_quote_gpc', FALSE);
J'ai rajouté le init_set() en haut de la page mais cela ne change rien
Une idée ?
Merci
Posté : 07 nov. 2008, 17:15
par AB