insertion d'une phrase avec apostrophe dans Mysql
10 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- totof78
- WRInaute discret

- Messages: 62
- Inscription: 6 Nov 2005
insertion d'une phrase avec apostrophe dans Mysql
Bonjour,
J'utilise une base Mysql 4.1 en local sur mon PC.
Lorsque j'insère des phrases avec des mots contenant des apostrophes, tout se passe bien
Si j'insère la même phrase en utilisant le même code dans la base de mon compte Free, j'ai systématiquement un antislash devant mes apostrophes.
J'utilise un formulaire pour saisir mes données puis je traite les données comme ça :
La seule différence que je vois est que en local ma base utilise un codage fr-ISO-8859-1 alors que sur Free c'est fr-UTF-8
Comment éviter cet antislash systématique ?
Merci d'avance.
J'utilise une base Mysql 4.1 en local sur mon PC.
Lorsque j'insère des phrases avec des mots contenant des apostrophes, tout se passe bien
Si j'insère la même phrase en utilisant le même code dans la base de mon compte Free, j'ai systématiquement un antislash devant mes apostrophes.
J'utilise un formulaire pour saisir mes données puis je traite les données comme ça :
- Code: Tout sélectionner
$contenu = nl2br(htmlspecialchars ($contenu,ENT_QUOTES));
$sql = "INSERT INTO table VALUES('$famille',$contenu')";
mysql_query($sql)
La seule différence que je vois est que en local ma base utilise un codage fr-ISO-8859-1 alors que sur Free c'est fr-UTF-8
Comment éviter cet antislash systématique ?
Merci d'avance.
- paysite-cash
- Nouveau WRInaute

- Messages: 14
- Inscription: 1 Mar 2006
tu fait un stripslasches quand tu récupères tes données plutot...
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
Hello,
c'est à cause du magic_quotes_gpc (une vraie saloperie).
Donc comme indiqué dans la doc, quand il est activé il te faut faire un stripslashes avant d'appeler mysql_real_escape_string(), qui est la seule fonction "necessaire et suffisante" pour l'insertion en base.
c'est à cause du magic_quotes_gpc (une vraie saloperie).
Donc comme indiqué dans la doc, quand il est activé il te faut faire un stripslashes avant d'appeler mysql_real_escape_string(), qui est la seule fonction "necessaire et suffisante" pour l'insertion en base.
- lexarin
- Nouveau WRInaute

- Messages: 9
- Inscription: 13 Déc 2005
$contenu = nl2br(htmlspecialchars ($contenu,ENT_QUOTES));
avec la fonction addslahes pour mettre en base :
$contenu = addslashes(nl2br(htmlspecialchars ($contenu,ENT_QUOTES)));
Puis pour afficher sur une page le contenu de la base en retirant les apostrophes
$contenu = stripslashes($contenu);
echo $contenu;
avec la fonction addslahes pour mettre en base :
$contenu = addslashes(nl2br(htmlspecialchars ($contenu,ENT_QUOTES)));
Puis pour afficher sur une page le contenu de la base en retirant les apostrophes
$contenu = stripslashes($contenu);
echo $contenu;
- spidetra
- WRInaute passionné

- Messages: 1500
- Inscription: 7 Juil 2003
dd32 a écrit:Merci Bool, la fonction mysql_real_escape_string est pour se prémunir contre le sql injection !
Cette fonction sert juste à créer une chaîne sql valide.
Il me semble que cela est un peu léger de n'appliquer que ce seul traitement pour se prémunir des injections SQL.
J'ai pas vraiment fait le tour de cette fonction. A priori, Elle n'empêche pas d'introduire le caractére # ( ou d'autres ) qui sert à commenter les instructions SQL.
D'un point de vue sécurité cela me semble un peu léger de n'appliquer que cette seule fonction sans appliquer des filtres aux données.
LinkId se pose les mêmes questions en ce momment.
-

Bool - WRInaute passionné

- Messages: 1290
- Inscription: 26 Fév 2004
spidetra : cette fonction est amplement suffisante.... que veux tu qu'elle fasse de plus ?
Le caractère "#", on s'en fout complètement franchement... c'est un caractère comme un autre. Où est le problème ici :
?
Se prémunir des injections SQL, ça consiste uniquement à empècher un "pirate" d'exécuter du code SQL arbritaire ; donc s'il saisit du texte, ce doit être interprèté comme du texte par MySQL, idem avec des nombres, des dates, ou toute autre sorte de contenu.
Il n'y a absolument aucun autre risque derrière.
Le caractère "#", on s'en fout complètement franchement... c'est un caractère comme un autre. Où est le problème ici :
- Code: Tout sélectionner
insert into matable values( 'hello # world' );
?
Se prémunir des injections SQL, ça consiste uniquement à empècher un "pirate" d'exécuter du code SQL arbritaire ; donc s'il saisit du texte, ce doit être interprèté comme du texte par MySQL, idem avec des nombres, des dates, ou toute autre sorte de contenu.
Il n'y a absolument aucun autre risque derrière.
10 messages
• Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Apostrophe et MySQL...
- Mysql Insertion en double
- probleme insertion en serveur mysql
- mysql : insertion d'un champ vide
- [mysql] insertion si pas dans la table
- insertion dans un champs Mysql de type BLOB
- Controle doublons et champs existants insertion mysql
- Problemes insertion avec formulaire dans mysql
- Reprise gestion de site et aide formulaire insertion mysql
- phrase de description
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- Les requêtes avancées sur Bing - 08-07-2010
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
- Sortie officielle de GoogleStats v2.0 ! - 23-02-2003
- Google veut référencer les livres - 31-10-2003
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


