[php] guillemet et apostrophes dans input
Résolu/Fermé
A voir également:
- Php apostrophe
- Easy php - Télécharger - Divers Web & Internet
- Double apostrophe clavier ✓ - Forum Perl
- Bouton php - Forum PHP
- Espace après apostrophe word ✓ - Forum Word
- Php?id=1 - Forum PHP
13 réponses
Bablon Arnaud
Messages postés
74
Date d'inscription
jeudi 13 janvier 2011
Statut
Contributeur
Dernière intervention
9 décembre 2011
11
Modifié par Bablon Arnaud le 22/02/2011 à 20:29
Modifié par Bablon Arnaud le 22/02/2011 à 20:29
comme ca :
ou encore comme ca :
$test = htmlspecialchars('L\'"apostrophe n\'est pas un problème pour PHP'); $input = "<input type=\"text\" value=\"".$test."\"/>"; print $input.'<br />';
ou encore comme ca :
$test = htmlspecialchars('L\'"apostrophe n\'est pas un problème pour PHP'); $input = '<input type="text" value="'.$test.'"/>'; print $input.'<br />';
Voilà, j'ai trouvé, il ne maquais que le flag ENT_QUOTES a la fonction htmlspecialchars.
C'etait assez difficile à comprendre puisque le navigateur interprete directement ces carracteres speciaux mais maintenant c'est tout pigé ;)
Encore merci pour ton aide, je vais pouvoir proteger tous mes champs de textes et les afficher correctement ! :)
C'etait assez difficile à comprendre puisque le navigateur interprete directement ces carracteres speciaux mais maintenant c'est tout pigé ;)
Encore merci pour ton aide, je vais pouvoir proteger tous mes champs de textes et les afficher correctement ! :)
Bablon Arnaud
Messages postés
74
Date d'inscription
jeudi 13 janvier 2011
Statut
Contributeur
Dernière intervention
9 décembre 2011
11
Modifié par Bablon Arnaud le 22/02/2011 à 17:03
Modifié par Bablon Arnaud le 22/02/2011 à 17:03
le texte dans la base de données n'est pas bon, tu ne dois pas avoir les \ dans ta base.
comment ta rentrer ton text dans la base ? (php gère très bien ca t'inquiète pas !!)
comment ta rentrer ton text dans la base ? (php gère très bien ca t'inquiète pas !!)
Non dans ma base c'est correct, c'est moi qui fait un addslashes() en sortie afin que ca ne cree pas de problemes.
Il n'y a pas de probleme avec mysql, c'est plutot entre php et html...
Cela m'est egal d'afficher les anti slash dans mon input, j'ai mis ce addslashes pour etre sur qu'il m'affiche ces carracteres speciaux dans l'input.
Mais peu importe... avec ou sans addslash, php ne semble pas savoir gerer une variable contenant les deux caracteres a la fois : guillemets et apostrophe.
Mais peut etre y a-t-il une astuce ?
Il n'y a pas de probleme avec mysql, c'est plutot entre php et html...
Cela m'est egal d'afficher les anti slash dans mon input, j'ai mis ce addslashes pour etre sur qu'il m'affiche ces carracteres speciaux dans l'input.
Mais peu importe... avec ou sans addslash, php ne semble pas savoir gerer une variable contenant les deux caracteres a la fois : guillemets et apostrophe.
Mais peut etre y a-t-il une astuce ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
22 févr. 2011 à 17:31
22 févr. 2011 à 17:31
Bonjour,
Si tu choisis l'option double-quotes, remplace \\' par '
Si tu choisis l'option simples quotes, remplace \\" par "
Xavier
PS : Je suis d'accord avec Bablon Arnaud : ton utilisation du addslash pour l'insertion en base de données n'est pas pertinente : tu dis que c'est pour t'éviter des ennuis, mais tu as bien là la preuve que ça t'en ajoute plus qu'autre chose.
Si tu choisis l'option double-quotes, remplace \\' par '
Si tu choisis l'option simples quotes, remplace \\" par "
Xavier
PS : Je suis d'accord avec Bablon Arnaud : ton utilisation du addslash pour l'insertion en base de données n'est pas pertinente : tu dis que c'est pour t'éviter des ennuis, mais tu as bien là la preuve que ça t'en ajoute plus qu'autre chose.
Ben j'ai un peu de mal à comprendre comment on peut afficher un texte avec apostrophe et guillemet, meme sans passer par php dans une balise input, c'est donc plus un probleme html en fait... :
Comment html peut-il gerer ça ?
<input type='text' name='test' value="ceci est un "texte", ne l'effacez pas">
<input type='text' name='test' value='ceci est un "texte", ne l'effacez pas'>
Comment html peut-il gerer ça ?
si je fait :
ou ca
ou ca
ou ca
rien ne fonctionne, quelle est la solution ?
<input type='text' name='test' value='ceci est un \"texte\", ne l\'effacez pas'>
ou ca
<input type='text' name='test' value="ceci est un \"texte\", ne l\'effacez pas">
ou ca
<input type='text' name='test' value='ceci est un "texte", ne l'effacez pas'>
ou ca
<input type='text' name='test' value="ceci est un "texte", ne l'effacez pas">
rien ne fonctionne, quelle est la solution ?
Bablon Arnaud
Messages postés
74
Date d'inscription
jeudi 13 janvier 2011
Statut
Contributeur
Dernière intervention
9 décembre 2011
11
Modifié par Bablon Arnaud le 22/02/2011 à 18:25
Modifié par Bablon Arnaud le 22/02/2011 à 18:25
un petit coup de pouce
ou
mais enlève ton addslashes il sert a rien, moi j'ai mis le \ à la main sinon j'ai une parse error (normal)
<?php //php (j'ai un antislash car mon contenu est écrit en dure dans mon fichier il vient pas d'une BDD) $test = 'l\'"apostrophe n\'est pas un problème pour PHP'; ?> //template <input id="test" name="test" value="<?php print htmlspecialchars($test); ?>"/>
ou
$test = 'l\'"apostrophe n\'est pas un problème pour PHP'; $input = "<input type='text' value='".htmlspecialchars($test)."'"; print $input.'<br />';
mais enlève ton addslashes il sert a rien, moi j'ai mis le \ à la main sinon j'ai une parse error (normal)
Je n'avais pas pensé à htmlspecialchars, je sens que j'approche d'une solution grace a toi, merci !
L'ennui c'est que ton exemple ne fonctionne pas. Peut etre une petite erreur de syntaxe, mais il m'affiche seulement le l.
Je vais cogiter un peu sur ce htmlspecialchars, merci encore.
L'ennui c'est que ton exemple ne fonctionne pas. Peut etre une petite erreur de syntaxe, mais il m'affiche seulement le l.
Je vais cogiter un peu sur ce htmlspecialchars, merci encore.
voila mon code :
Cela m'affiche seuelement le premier carracter aussi. Comme dans ton exemple. Car je fait la meme chose en intervertissant guillemets et apostrophe.
Ca ne fonctionne donc toujours pas... :(
$test = "l'apostrophe n'est pas un problème pour PHP. \"enfin a priori\"" ; echo $test."<br>" ; echo htmlspecialchars($test)."<br>" ; $input1 = "<input type='text' value='".htmlspecialchars($test)."'>(Fr) ";
Cela m'affiche seuelement le premier carracter aussi. Comme dans ton exemple. Car je fait la meme chose en intervertissant guillemets et apostrophe.
Ca ne fonctionne donc toujours pas... :(
Bablon Arnaud
Messages postés
74
Date d'inscription
jeudi 13 janvier 2011
Statut
Contributeur
Dernière intervention
9 décembre 2011
11
22 févr. 2011 à 20:18
22 févr. 2011 à 20:18
mon exemple fonctionne !!! jlai tester sur mon pc !! jvais re regarder mais ca me parais suspect , jvais faire un test ac ta version les " et ' sont pas identique jvais looker
Bablon Arnaud
Messages postés
74
Date d'inscription
jeudi 13 janvier 2011
Statut
Contributeur
Dernière intervention
9 décembre 2011
11
22 févr. 2011 à 20:21
22 févr. 2011 à 20:21
a oui autan pour moi, la version qui fonctionne c'est celle qui a le HTML en dehors du PHP (ce qui est plus propre) (test le 1er car avec le php qui creer la donnée et en dehors le html qui affiche et format la données) jlook pour le reste