Apostrophes et guillemets SQL

Résolu/Fermé
Lala - 2 juil. 2010 à 09:23
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 2 juil. 2010 à 15:27
Bonjour,

Tout d'abord j'ai déjà exposé mon problème hier mais je m'étais trompé dans le type de problème ce qui a donné un titre un peu HS donc je recommence:

Je dois faire une page d'accueil dans laquelle je peux modifier le contenu et le titre. Dans ma bdd le "accueil_contenu_fr" est de type TEXT et le "accueil_titre_fr" est de type VARCHAR.

Le problème c'est que lorsque dans le titre ou le contenu j'ai le malheur de placer une apostrophe j'ai une erreur de ce type (dans ce cas j'ai écris l'eau dans mon titre):

Erreur de syntaxe pr?s de 'eau', accueil_fr_contenu='


En bidouillant tout à l'heure j'ai réussi à afficher les apostrophes... Mais les guillemets ne marchaient plus.
Voici une partie du code, si quelqu'un a besoin du reste je le mettrait mais je ne pense pas que le problème vienne d'ailleurs:

$titre=($_POST['accueil_fr_titre']);
$contenu= ($_POST['accueil_fr_contenu']);

$requete="UPDATE accueil_fr SET accueil_fr_titre='$titre', accueil_fr_contenu='$contenu'";


Comme vous vous en doutez j'aimerais pouvoir afficher des apostrophes ET des guillemets dans mes titres/textes.

6 réponses

Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
2 juil. 2010 à 09:27
Me revoilà... Désolé ;-)

Je crois que pour éviter d'avoir tout problème d'insertion un mysql_real_escape_string() permet de transmettre ta chaîne quelque soit le caractère qui pourrait clore ta chaine de caractère.

Tu aurais quelque chose du genre :

$titre=mysql_real_escape_string($_POST['accueil_fr_titre']);


et après (normalement) tu peux insérer $titre sans problème...
2
Tiens bonjour Breub :)
Merci beaucoup je galérais depuis hier mais ça marche enfin grâce à toi!!!

J'ai une dernière question, mysql_real_escape_string() ne pose pas de problème de sécurité? Car même si dans l'absolu l'admin sera le seul à avoir accès à ces modifications j'aimerais utiliser cette fonction ailleurs.
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
2 juil. 2010 à 09:37
Non c'est d'ailleurs presque une obligation de sécurité de le mettre, ça permet notamment d'éviter les injections sql. J'aurais dû y penser hier mais il y a des jours...


https://www.commentcamarche.net/contents/56-attaques-par-injection-de-commandes-sql

Donc à chaque variable postée (c'est à dire qui vient de l'utilisateur), tu dois faire un mysql_real_escape_string() avant d'interroger ta base...

Bonne continuation.
0
Ah bah tu résous tout mes problèmes en même temps... Merci encore ! :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
2 juil. 2010 à 09:39
De rien ;-)

Bonne continuation...
0
Re!
J'ai un nouveau soucis :(

En faite depuis que j'utilise les "mysql_real_escape_string()" j'ai des soucis au niveau du TEXTAREA que j'utilise: je ne peux plus mettre de limite de taille sur une ligne, avant j'avais mit un "max-lenght" pour les images dans le css, et pour ce qui est de la taille du texte, le script tinyMCE que j'utilise allait tout seul à la ligne... Maintenant je peux écrire un nombre infini de caractère sur 1 ligne dans mon textarea (qu'on peut faire défilé avec un scroll du coup) et quand j'enregistre ça dans ma bdd pour le ressortir ensuite, ça ressort tout sur une ligne en sortant du "cadre" du site... D'un coté je me dis que ça n'a rien à voir avec la fonction, de l'autre je n'ai fais aucune modifications à part celle là.
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
2 juil. 2010 à 12:04
max-length peut-être...
0
max-length c'est pour la taille du texte entier pas pour celle d'une ligne non?
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
2 juil. 2010 à 12:25
Oui c'est juste que tu as mis lenght Sinon tu peux faire un style="width:100px;height:100px;" dans ta balise textarea
0
ça réduit la taille de la fenêtre mais si je dépasse ça continue toujours et j'ai un scroll...
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
2 juil. 2010 à 13:14
Essaye ça à la place : rows='6' cols='30'
0