Problème formulaire

Fermé
LaurentLB - 23 oct. 2008 à 00:37
Ted23 Messages postés 6 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008 - 25 oct. 2008 à 13:01
Bonjour à tous,

J'ai un problème et ne sachant pas trop où poster je pose ma question ici. J'ai fait un site intégrant une partie en français et une partie en russe (alphabet cyrillique). L'affichage du site en latin et en cyrillique ne posent pas de problème les formulaires réalisés dans les deux langues non plus, les envois des variables des formulaires passent par un script PHP que voici et tout va bien :

<?php
$TO = "monsite@monmail.fr";

$subject = "Retour formulaire RU";

$h = "From: Mon site";

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

header("Location: [ Lien ]");

?>

Mon problème est le suivant. Lorsque mes visiteurs remplissent le formulaire en russe les caractères affichés dans le mail ne sont plus en cyrillique mais en une suite de caractères incompréhensibles. J'ai essayé de modifier le charset de la page html du formulaire ainsi que de la page PHP d'envoi de variables rien n'y fait les caractères ne s'affichent pas en russe. Alors j'ai pensé à une solution alternative qui serait d'enregister les réponses des formulaires russes sur un fichier TXT et de l'envoyer à mon mail via un fichier joint. Est-ce que vous pensez que celà peut fonctionner sachant que si je tape un notepad en russe sur mon ordinateur tout marche bien ? Si oui étant gros débutant pourriez-vous m'indiquer le code a rajouter pour faire celà ? Sinon penez-vous a une solution pour récupérer d'une manière ou d'une autre un formulaire écrit en russe ?

Merçi d'avance vous me retireriez une grosse épine du pied.

5 réponses

Bonjour,

il va peut-être falloir utiliser une des fonctions suivantes sur les variables qui contiennent le message :
utf8_decode($chaine_a_decoder); => sûrement celle qu'il faudra utiliser
uf8_encode($chaine_a_encoder);

Elle permettront à PHP de traiter les chaînes dans le charset de base (le plus répandu étant l'UTF8).
Essayez les deux, et regardez le résultat :)
0
Merci pour votre message et pardon d'avance pour mon ignorance totale en programmation. Où dois-je placer cette commande dans le formulaire html ou dans le script php ? Devant chaque variable ou une seule fois ? je n'y connais rien du tout.
0
La fonction est une fonction PHP, à utiliser sur chaque champ du formulaire qui sera inclut au message.

Exemple, avec un champ de formulaire dont le nom est "message" :
$message_pour_mail = utf8_decode($_POST['message']);
0
Ted23 Messages postés 6 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008
24 oct. 2008 à 14:42
Dans votre cas, voici la partie de code à modifier pour corriger (normalement) le problème :

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= utf8_decode($key)." : $val\n";
}
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ted23 Messages postés 6 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 29 octobre 2008
25 oct. 2008 à 13:01
Après re-revérification (^^), voici un autre code, qui devrait encore mieux fonctionner (puisqu'il traite la totalité des variables et plus seulement la clé du tableau $HTTP_POST_VARS) :

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= utf8_decode($key).' : '.utf8_decode($val)."\n";
}
-1