Insérer un contre-slash dans base de données MySQL

Résolu
david77179 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour à tous,

J'ai un petit problème tout bête avec un formulaire HTML. J'ai une case commentaires et lorsque je veux y insérer un apostrophe forcément ça coince...
Comment faire pour insérer automatiquement un contre-slash devant cet apostrophe ?

Merci de votre aide.

Cordialement,

David

4 réponses

Utilisateur anonyme
 
Bonjour

Comme il est indiqué dans le lien donné par nagashima, il NE FAUT PAS utiliser addslashes dans une requête pour une base de données.
Il faut utiliser mysql_real_escape string, ou mysqli_real_escape string ou une requête préparée (PDO) selon l'interface utilisée pour la base de données. Elles sont faites spécialement pour ça.
Et il n'y a rien à retirer pour l'affichage. Les slashes insérés ne sont insérés que dans la requête, pas dans la base, ils ne sont donc pas relus quand on extrait les données.
1
Utilisateur anonyme
 
autant pour moi j'avais pas ben vérifié ^^
0
Utilisateur anonyme
 
Je crois (pas sûr) que c'est une habitude qui remonte à des vieilles versions de PHP qui n'avaient pas ces fonctions adaptées. C'était donc bien de faire comme ça... autrefois :-)
0
Utilisateur anonyme
 
oui c'est plus ou moins ce que je pense car c'est plus un conseil qu'ils donnent qu'une obligation ^^ (combien de fois j'ai fais des "replace" pour échapper les caractères ... x] )
0
Utilisateur anonyme
 
"...vous devez utiliser les fonctions d'échappement spécifiques..."
Non non, c'est bien une obligation !
Le mieux est encore d'utiliser PDO, maintenant.
0
Utilisateur anonyme
 
tiens je testerai juste histoire de voir s'il me renvoi une erreur ou un warning, je suis curieux de savoir s'ils nous forcent ^^ (car bon, au final ça reste de l'échappement, mais je te rejoins dans le fait d'utiliser pdo afin de ne pas avoir à gérer le type de base ;] )
0
Utilisateur anonyme
 
salut,
Ton traitement se fait via php je suppose ? il y a une méthode qui fait ca bien :
addslashes

https://www.php.net/manual/fr/function.addslashes.php

naga
0
david77179 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
Merci de ta réponse aussi rapide :)
C'est ce que j'essai de faire sauf que je ne sais pas où placer

<?php
echo addslashes($coms);
?>


Dans la déclarations des variables ? après ? avant ? dans mon formulaire ?
La est mon problème. Là c'est placé juste après la déclaration des variables et ca ne fonctionne pas...

Merci :)

Une fois le problème résolu, pensez à cliquer sur le lien "Marquer comme résolu " =D
Vive les communautés d'entre aides et surtout CommentçaMarche.net
0
Utilisateur anonyme
 
et bien si le problème se pose au moment de l'insertion dans ta table, c'est à ce moment là, par exemple

..."INSERT INTO latable (lachaine) VALUES (" .addslashes($coms) . ")"...


ou avant l'insertion
$coms=addslashes($coms);


en pensant après que pour ton affichage, il te faudra peu être les retirer avec stripslashes :

http://www.php.net/manual/fr/function.stripslashes.php
0
david77179 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
Merci de vos réponses :)

En faisant comme ca :

 
$coms = addslashes ($_POST['coms']);



ça fonctionne niquel :)

Par le plus grand des hasards vous ne voyez pas une méthode pour l'appliquer à toutes les pages et toutes les variables ?

Encore merci :)
Une fois le problème résolu, pensez à cliquer sur le lien "Marquer comme résolu " =D
Vive les communautés d'entre aides et surtout CommentçaMarche.net
0
Utilisateur anonyme
 
niquel.
Par contre, comme l'à dit le père, il est préférable d'utiliser les fonctionnalité pdo prévu à cet effet. Dans ton cas l'échappement est suffisant mais ce serai plus .... "correct".

Pour ce qui est de l'appliquer à chaque variables, il ne me semble pas qu'il y a un paramètre qui échappera systématiquement lors d'insertion dans ta bdd, à vérifier mais j'en doute fortement ... donc pour échapper toutes tes variables ... il faut échapper toutes tes variables x) mais bon, normalement tu n'a à le faire que lors de communication avec la bdd (ou lors des post pour éviter les injections, mais ce n'est pas dans le même but ni strictement le même traitement).

naga
0
david77179 Messages postés 157 Date d'inscription   Statut Membre Dernière intervention   22
 
Merci beaucoup nagashima :)
Je vais pas me compliquer la vie j'ai une dizaine de variables à inserer sur 2 pages donc ca va me prendre 5 mins à peine ça sera plus simple :)

Encore merci à toi et merci à le père :)
0