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

Résolu/Fermé
david77179 Messages postés 155 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 9 janvier 2019 - 17 déc. 2013 à 15:10
 Utilisateur anonyme - 19 déc. 2013 à 12:56
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

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
17 déc. 2013 à 16:24
autant pour moi j'avais pas ben vérifié ^^
0
Utilisateur anonyme
17 déc. 2013 à 16:28
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
17 déc. 2013 à 16:41
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
17 déc. 2013 à 16:45
"...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
17 déc. 2013 à 17:04
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
17 déc. 2013 à 15:15
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 155 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 9 janvier 2019 22
Modifié par david77179 le 17/12/2013 à 15:19
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
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 155 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 9 janvier 2019 22
Modifié par david77179 le 17/12/2013 à 17:10
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
17 déc. 2013 à 17:23
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 155 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 9 janvier 2019 22
17 déc. 2013 à 17:31
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