htmlentities, htmlspecialchars et ASCII.
Posté : 27 nov. 2014, 12:15
Bonjour,
Voilà le problème que je rencontre:
J'ai un formulaire suivi d'une feuille qui récapitule les données entrées dans le formulaire.
Cette deuxième feuille permet à l'utilisateur de vérifier ce qu'il vient d'entrer dans le formulaire et d'effectuer les modifications
nécessaires s'il y a besoin.
Un problème survient avec l'utilisation de htmlentities et htmlspecialchars.
Je m'explique:
J'ai un champs pour les commentaires dans mon formulaire. Si par exemple, en tant qu'utilisateur, j'écris
Merci d'avance pour votre réponse.
Dans le fichier récapitulatif, le réaffichage sera
Merci d'avance pour votre réponse.
si j'utilise htmlentities ou htmlspecialchars comme ceci (dans mon fichier de récapitulation):
Merci d'avance pour votre réponse.
si j'écris simplement
htmlentities ou htmlspecialchars, tout en assurant un réaffichage correct à l'écran.
Pour info,
Il est en de même même si j'écris juste avant:
L'ajout de:
L'ajout de
AddDefaultCharset UTF-8
tout en haut de mon fichier httpd.conf dans le fichier apache non plus
(même après avoir éteind puis rallumé mon panneau de configuration).
L'ajout de:
Dans ma table toutes mes colonnes sont en utf8_general_ci dans Interclassement,
donc y compris celle des commentaires du formulaire.
Même
qui selon moi devrait permettre de passer à un jeu de caractères qui traduit les accents
ne fonctionne pas non plus.
Quelqu'un peut-il m'aider?
Voilà le problème que je rencontre:
J'ai un formulaire suivi d'une feuille qui récapitule les données entrées dans le formulaire.
Cette deuxième feuille permet à l'utilisateur de vérifier ce qu'il vient d'entrer dans le formulaire et d'effectuer les modifications
nécessaires s'il y a besoin.
Un problème survient avec l'utilisation de htmlentities et htmlspecialchars.
Je m'explique:
J'ai un champs pour les commentaires dans mon formulaire. Si par exemple, en tant qu'utilisateur, j'écris
Merci d'avance pour votre réponse.
Dans le fichier récapitulatif, le réaffichage sera
Merci d'avance pour votre réponse.
si j'utilise htmlentities ou htmlspecialchars comme ceci (dans mon fichier de récapitulation):
<textarea rows="4" cols="100" name="recapitulation_commentaires" maxlength="2000"><?php echo htmlentities($commentaires, ENT_QUOTES, 'UTF-8'); ?></textarea>
Le réaffichage est:Merci d'avance pour votre réponse.
si j'écris simplement
<textarea rows="4" cols="100" name="recapitulation_commentaires" maxlength="2000"><?php echo $commentaires; ?></textarea>
Ce que je voudrais faire, c'est assurer une protection contre les injections xss avec des fonctions comme htmlentities ou htmlspecialchars, tout en assurant un réaffichage correct à l'écran.
Pour info,
<?php echo mb_detect_encoding($commentaires); ?>
et
<?php echo mb_detect_encoding(htmlentities($commentaires, ENT_QUOTES, 'UTF-8')); ?>
affichent tous deux à l'écran ASCII.Il est en de même même si j'écris juste avant:
<?php utf8_encode($commentaires); ?>
Tous mes fichiers sont paramétrés en UTF-8 dans mon éditeur.L'ajout de:
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
</head>
tout en haut du fichier de récapitulation n'y change rien.L'ajout de
AddDefaultCharset UTF-8
tout en haut de mon fichier httpd.conf dans le fichier apache non plus
(même après avoir éteind puis rallumé mon panneau de configuration).
L'ajout de:
header('Content-Type: text/html; charset=UTF-8');
en haut de mon fichier de récapitulation ne change rien non plus.Dans ma table toutes mes colonnes sont en utf8_general_ci dans Interclassement,
donc y compris celle des commentaires du formulaire.
Même
$commentaires=mb_convert_encoding($commentaires, 'UTF-8', 'ASCII');
, dans le fichier de récapitulation,qui selon moi devrait permettre de passer à un jeu de caractères qui traduit les accents
ne fonctionne pas non plus.
Quelqu'un peut-il m'aider?