A voir également:
- [PHP] Apostrophe et addslashes
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Double apostrophe clavier ✓ - Forum Perl
- Bouton php - Forum PHP
- Espace après apostrophe word ✓ - Forum Word
10 réponses
effectivement, htmlspecialchars et htmlentities t'empêchent d'insérer des codes html en transformant les < et > en & lt; et & gt; (sans les espaces)
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
28 juin 2009 à 20:56
28 juin 2009 à 20:56
Salut
Je pense que t'a pas bien saisi l'interet de addslashes
Cette fonction permet d'ajouter un \ devant les caracteres speciaux, pas de l'enlever ! Mais tu utilise mysql_real_escape_string donc tu n'a pas besoin d'un addslashes, ce serai redondant...
Ton code la est tout a fais correct
Ce que tu doit faire c'est lors de l'affichage des données, supprimer le \ grace a la fonction stripslashes.
Je pense que t'a pas bien saisi l'interet de addslashes
Cette fonction permet d'ajouter un \ devant les caracteres speciaux, pas de l'enlever ! Mais tu utilise mysql_real_escape_string donc tu n'a pas besoin d'un addslashes, ce serai redondant...
Ton code la est tout a fais correct
Ce que tu doit faire c'est lors de l'affichage des données, supprimer le \ grace a la fonction stripslashes.
Bonjour,
Merci de ta réponse mais , maintenant , quand je rentre un titre avec une apostrophe, ça n'eregistre pas ...
J'ai peut etre pas mis au bon endroit le "stripslashes"
j'ai :
merci de m'ader a trouver une solution ....
Merci de ta réponse mais , maintenant , quand je rentre un titre avec une apostrophe, ça n'eregistre pas ...
J'ai peut etre pas mis au bon endroit le "stripslashes"
j'ai :
<?php if (isset($_POST['titre']) ) // Si les variables existent { // D'abord, on se connecte à MySQL include("connexion.php"); $titre = stripslashes($_POST['titre']); // Ensuite on enregistre le message mysql_query("INSERT INTO moi VALUES('', '$titre' )"); // On se déconnecte de MySQL mysql_close();
merci de m'ader a trouver une solution ....
nEm3sis
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
113
29 juin 2009 à 10:40
29 juin 2009 à 10:40
lis bien ce qu'il a dit avant ...
donc ton code était correct avant que tu mette stripslashes
il faut que tu utilise stripslashes quand tu lis le message dans la base et non quand tu l'ecris
Ton code la est tout a fais correct Ce que tu doit faire c'est lors de l'affichage des données, supprimer le \ grace a la fonction stripslashes.
donc ton code était correct avant que tu mette stripslashes
il faut que tu utilise stripslashes quand tu lis le message dans la base et non quand tu l'ecris
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Il ne faut pas utiliser addslashes pour insérer tes données dans la base, ni stripslahes pour les afficher.
Il faut peut-être utiliser stripslashes pour récupérer les informations par POST ou GET, ça dépend de la configuration de ton serveur.
Il faut utiliser mysql_real_escape_string pour enregistrer les informations dans la base
Il faut utiliser (si tu ne l'as pas fait à l'enregistrement) htmlspecialchars ou htmlentities pour les afficher
Lis la doc de ces fonctions dans le manuel PHP, c'est beaucoup plus fiable que les conseils qu'on trouve sur ce forum
Il ne faut pas utiliser addslashes pour insérer tes données dans la base, ni stripslahes pour les afficher.
Il faut peut-être utiliser stripslashes pour récupérer les informations par POST ou GET, ça dépend de la configuration de ton serveur.
Il faut utiliser mysql_real_escape_string pour enregistrer les informations dans la base
Il faut utiliser (si tu ne l'as pas fait à l'enregistrement) htmlspecialchars ou htmlentities pour les afficher
Lis la doc de ces fonctions dans le manuel PHP, c'est beaucoup plus fiable que les conseils qu'on trouve sur ce forum
il n'y aurait pas une autre solution ? parce que la vous voulez que je change l'affichage sur toutes mes pages !
je n'ai pourtant pas de problème avec les apostrophes quand j'écris directement dans phpmyadmin .... le problème doit certainement venir du formulaire ....
si y'a pas d'autres solution que celle que vous me proposé , j'ai fait ça :
et en effet ça marche bien, MERCI :) , mais si je doit me le taper sur toute mes pages Oo
je n'ai pourtant pas de problème avec les apostrophes quand j'écris directement dans phpmyadmin .... le problème doit certainement venir du formulaire ....
si y'a pas d'autres solution que celle que vous me proposé , j'ai fait ça :
<?php $reponse = mysql_query("SELECT * FROM moi WHERE id='".$_GET['var']."'"); $donnees = mysql_fetch_array($reponse) ?> <?php echo stripslashes($donnees['titre'] ); ?>
et en effet ça marche bien, MERCI :) , mais si je doit me le taper sur toute mes pages Oo
nEm3sis
Messages postés
710
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
113
29 juin 2009 à 11:48
29 juin 2009 à 11:48
ben le fait d'échapper les caractère c'est pour la sécurité
pour éviter les injections sql par exemple
donc question sécurité mieux vaut l'écrire sur chaque page plutôt que de risquer que quelqu'un prenne le contrôle du site
après peut être qu'en utilisant dans include tu pourrais éviter de l'écrire à chaque fois non ?
enfin ça dépend de pourquoi tu t'en sert aussi
tu peux aussi faire une fonction ( ou une classe ) qui te servirai a récupérer les info de la bdd et de les échapper
comme ça tu a juste la fonction à appeler et hop =)
pour éviter les injections sql par exemple
donc question sécurité mieux vaut l'écrire sur chaque page plutôt que de risquer que quelqu'un prenne le contrôle du site
après peut être qu'en utilisant dans include tu pourrais éviter de l'écrire à chaque fois non ?
enfin ça dépend de pourquoi tu t'en sert aussi
tu peux aussi faire une fonction ( ou une classe ) qui te servirai a récupérer les info de la bdd et de les échapper
comme ça tu a juste la fonction à appeler et hop =)
ok nEm3sis , mais ce que tu me raconte a l'air un peut trop dur pour moi ^^.
De toute façon mon formulaire est dans un dossier protégé par htaccess (ya que moi qui utilise le formulaire)
donc finallement j'ai fait :
et ça marche bien :)
_________________________________
et j'ai une autre p'tite question concernant mon formulaire :
c'est le "htmlspecialchars" qui m'empêche de mettre des codes html ?
De toute façon mon formulaire est dans un dossier protégé par htaccess (ya que moi qui utilise le formulaire)
donc finallement j'ai fait :
¤ page formulaire : $titre = mysql_real_escape_string(htmlspecialchars($_POST['titre'])); ¤ page d'affichage : <?php echo stripslashes($donnees['titre']) ?>
et ça marche bien :)
_________________________________
et j'ai une autre p'tite question concernant mon formulaire :
c'est le "htmlspecialchars" qui m'empêche de mettre des codes html ?
je n'ai pourtant pas de problème avec les apostrophes quand j'écris directement dans phpmyadmin C'est parce que phpmyadmin fait tout le boulot à ta place. Mais il le faite
Si ton script marche tel quel, c'est que la configuration de ton serveur s'y prête : si tu peux enregistrer les données en mettant directement $_GET['var'] dans une requête, c'est que magic_quotes_gpc est actif, mais tu peux être sûr que tu auras de mauvaises surprises en changeant de serveur.
Si ton script marche tel quel, c'est que la configuration de ton serveur s'y prête : si tu peux enregistrer les données en mettant directement $_GET['var'] dans une requête, c'est que magic_quotes_gpc est actif, mais tu peux être sûr que tu auras de mauvaises surprises en changeant de serveur.