Problème de cotes et d'antislash

Petit nouveau ! | 1 Messages

05 déc. 2007, 01:15

Bonsoir,

Je développe un forum pour une épreuve pour mon examen de BTS et je rencontre une erreur assez bizarre, le problème se pose pour l'ajout de topic ou de réponse, en localhost (j'utilise WAMP2), l'insert se passe très bien et l'affichage aussi mais lorsque que je mets mes pages en ligne sur mon FTP/ma BD de FREE, pour l'insert et l'affichage, j'ai des \ qui apparaissent !

Pour résumer, voici la récupération et le traitement des variables :
$titre = mysql_real_escape_string($_POST['titre']);
$message = mysql_real_escape_string($_POST['contenu']);
$numrub = $_GET['rub'];
$qry_topic = "INSERT INTO TOPIC
VALUES ('', '".$_SESSION['id_user']."', '".$numrub."', '".$titre."', '".$message."', '".$todaydate['date']."')";
Donc en localhost avec WAMP 2 :
Si j'affiche j'ai ca :

Code : Tout sélectionner

C'est l'éléphant \
Et en ligne, dans la BD de free, ca affiche :

Code : Tout sélectionner

C\'est l\'éléphant \\
La phrase est nette dans la BD en localhost alors que dans la BD Free elle ajoute les \ , ce qui voudrait dire que la fonction mysql_real_escape_string() n'est plus nécessaire or ce sont les mêmes pages et la même BD. Or je souhaiterais pouvoir uniformiser tout ca histoire de ne pas avoir a faire une version local et une version online...

Merci de vos futures réponses :)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

05 déc. 2007, 01:34

Probablement magic_quotes_gpc.

Mon conseil si tu veux une bonne note : n'accède pas à $_GET/$_POST directement, utilise filter_input(). N'utilise pas les fonctions mysql, ou même mysqli, mais utilise PDO et les requêtes préparées à la place.

De plus, dans ton exemple, tu es vulnérable à une injection SQL par $_GET['rub'].