Apostrophes et guillemets SQL

Résolu
Lala -  
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

6 réponses

Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
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
Lala
 
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   Statut Membre Dernière intervention   369
 
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
Lala
 
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   Statut Membre Dernière intervention   369
 
De rien ;-)

Bonne continuation...
0
Lala
 
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   Statut Membre Dernière intervention   369
 
max-length peut-être...
0
Lala
 
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   Statut Membre Dernière intervention   369
 
Oui c'est juste que tu as mis lenght Sinon tu peux faire un style="width:100px;height:100px;" dans ta balise textarea
0
Lala
 
ç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   Statut Membre Dernière intervention   369
 
Essaye ça à la place : rows='6' cols='30'
0