IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Formulaire de contact et caractères accentués


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut Formulaire de contact et caractères accentués
    Bonjour à tous ,

    J'ajoute sur un csm encodé utf-8, un très simple formulaire de contact.

    Le problème se traduit à la lecture du message reçu.

    Exemple du message reçu :

    ===
    Bonjour,

    Je fais un essai : L'autre - à é ô où

    VoilÃ
    ===

    J'ai tenté de nombreuses modifications, mais en vain, il y a quelque chose que je ne dois pas comprendre ou qui m'a échappé.

    Je me permets de venir vous demander un coup de main, et de mettre pour indication la source complète du formulaire, ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <?php
     
    // Sécurité
    if ( !defined ( 'TAGADASH' ) )
    {
        header ( 'Location: ../' );
        die ( -1 );
    }
     
    // Titre de la page
    $page_titre = 'Contacter l&rsquo;administrateur';
    $page_infos = 'Contacter l&rsquo;administrateur';
    $page_texte .= "<h3 align=\"center\">Formulaire de contact</h3>";
    $page_texte .= "<p align=\"center\">Ce formulaire, vous permet d'envoyer un message &agrave;  l'administrateur du site</p>";
     
    if(empty($_POST))
    {
    	if($_GET["message"]=="ok")
    	{
    		$corps.="Votre mail a bien été envoyé, ainsi que votre adresse IP : ".$_SERVER['REMOTE_ADDR']."\r\n<br/>" ;
    	}
    	else
    	{
    	$premiernombre = rand(0,100);
    	$secondnombre = rand(100, 200);
    	$troisiemenombre = rand(0, 200);
    $page_texte .="
    
    				<form method=\"post\" action=\"index.php?page=F_contact\" style=\"width:100%;\" style=\"margin-left:5px;\">
                    <fieldset>
                    <legend>&nbsp;Contacter l'administrateur&nbsp;</legend>
                    <br />
    					Nom, Pr&eacute;nom :<br />
    					<input type=\"text\" name=\"nom\" id=\"nom\"/><br />				
    					Votre adresse e-mail :<br />
    					<input type=\"text\" name=\"email\" id=\"email\"/><br />
    					Objet du message :<br />
    					<input type=\"text\" name=\"objet\" id=\"objet\"/><br />
    					Message :<br />
    					<textarea name=\"message\" id=\"message\" cols=\"30\" rows=\"10\" style=\"width:85%;\"></textarea><br />
    					Question anti-robots :<br />
    					<input type=\"text\" name=\"premiernombre\" value=".$premiernombre." size=\"1\" readonly=\"readonly\" /> 
    					<input type=\"text\" name=\"secondnombre\" size=\"1\"	value=".$secondnombre." readonly=\"readonly\" /> 
    					<input type=\"text\" name=\"troisiemenombre\" value=".$troisiemenombre." size=\"1\" readonly=\"readonly\" /><br />
    					Recopiez les nombres contenus dans le premier et le troisi&egrave;me champ (ci-dessus) l'un &agrave; la suite de l'autre dans le champ ci-dessous :<br />
    					<input type=\"text\" name=\"question\" id=\"question\" size=\"4\" />
    					<br />
    					<input type=\"submit\" name=\"Envoyer\" value=\"Envoyer\"/><br /><br />
    					Votre adresse IP, sera jointe &agrave; votre envoi.<br /><br />
    					Votre adresse IP est, ".$_SERVER['REMOTE_ADDR']." <br /><br />
                        </fieldset>
    
    				</form>
    
    ";
    	}	
    }
    else
    {
    	$temp=array_map('trim', $_POST) ;
    	$post=array_map('htmlspecialchars', $temp) ;
    	$erreur='' ;
    		if(empty($post["nom"]))
    		{
    			$erreur.="<font color=\"#cc0000\">Vous n'avez pas rempli le champ \"Nom, Pr&eacute;nom\".</font><br/>" ;
    		}	
    		if(empty($post["email"]))
    		{
    			$erreur.="<font color=\"#cc0000\">Vous n'avez pas rempli le champ \"Votre adresse e-mail\".</font><br/>" ;
    		}
    		if(empty($post["objet"]))
    		{
    			$erreur.="<font color=\"#cc0000\">Vous n'avez pas rempli le champ \"Objet du message\".</font><br/>" ;
    		}
    		if(!empty($post["email"]) && !preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#', $post["email"]))
    		{
    			$erreur.="<font color=\"#cc0000\">L'adresse e-mail que vous avez rentr&eacute; est incorrecte.</font><br/>" ;
    		}
    		if(empty($post["message"]))
    		{	
    			$erreur.="<font color=\"#cc0000\">Vous n'avez pas rempli le champ \"Votre message\".</font><br/>" ;
    		}
    		if($post["question"]!=$post["premiernombre"].$post["troisiemenombre"])
    		{
    			$erreur.="<font color=\"#cc0000\">La r&eacute;ponse &agrave; la question anti-robots ne correspond pas &agrave; la r&eacute;ponse attendue !</font><br/><br /><img src='themes/commun/images/quote.gif' alt='' width='20' height='15' />&nbsp;<a href='javascript:history.back()'>Retournez sur le formulaire !</a>&nbsp;Merci." ;
    		}
    	if(empty($erreur))
    	{
    		if(mail('votre.adressemail@fai.com', stripslashes($post["objet"]), stripslashes("Un visiteur vous a contact&eacute;\r\n\r\nSon nom : ".$post['nom']."\r\n\r\n Son adresse E-mail : ".$post["email"]."\r\n\r\n Son adresse IP : ".$_SERVER['REMOTE_ADDR']."\r\n\r\n ".$post["message"]), "From: Site Tagadash <$email>"."\r\n"."Reply-To: ".$post["email"]))
    $page_texte .="
                <br />
                <center>
    			<fieldset>
                <legend>&nbsp;Merci&nbsp;</legend>
    			<font color=\"#1877d5\">
                <br /><br />			
                    Votre message a bien &eacute;t&eacute; envoy&eacute;, ainsi que votre adresse IP : ".$_SERVER['REMOTE_ADDR']." <br /><br />			
    				Je vous r&eacute;pondrai, dans les meilleurs d&eacute;lais.
                <br /><br /><br />
    			</font>
                </fieldset>
                </center>
                <br />			
    ";
    	}
    	else
    	{
    		$page_texte .= $erreur ;
    	}
    }
    ?>
    D'avance, je remercie ceux qui voudront bien se pencher sur la question.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 194
    Par défaut
    Bonsoir,

    As-tu regarder dans ton php.ini, la valeur du : default_charset.
    ça pourrais venir de ça.

    Yasen77

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Bonjour,

    Merci de donner suite à ma demande.

    Je viens de regarder avec phpinfo(); mais je ne trouve pas cette valeur, il ya peut être un autre moyen de faire la recherche, que je ne connais pas (OVH).

    Voici ce que j'ai en retour :

    Configuration File (php.ini) Path => /usr/local/lib

    Loaded Configuration File => /usr/local/lib/php.ini

    En revanche, j'indique pour information, que je reçois une copie des messages du module MP du cms, sans que l'affichage soit altéré (sic).

    Encore merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 194
    Par défaut
    Est-ce que le fichier ou il y as ton code, est bien enregistrer au format UTF-8, et non en ANSI.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Par défaut
    Bonjour,

    Tout d'abord, je suis désolé de revenir vers toi plus tardivement, que souhaité.

    Je réponds :

    1. Le cms (que tu peux voir sur mon site, en cliquant sur le lien Tagadash) est encodé utf-8

    ===

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/2002/REC-xhtml1-20020801/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    ===

    2. Le formulaire, comme on peut le constater (voir la source complète, ici, tout en haut) est volontairement dépourvu du contenu header, puisqu'il existe pour tout le cms (uft-8), et à fortiori le script y est soumis.

    3. Seulement, il doit manquer un bout de code commun, pour toutes les fonctionnalités du genre, que je n'ai pas encore trouvé dans la partie système du cms.

    4. Je cherche donc pour ce script, à intervenir indépendamment du reste, peut être avec une fonction utf8_decode "Convertit une chaîne UTF-8 en ISO-8859-1" ....

    Ou toute autre formule que je connais pas encore.

    À l'origine, ce script fonctionne très bien, mais en :

    ===

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    ===

    Pour info, je mets le script d'origine complet, ci-dessous :

    ===

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title="Design ex" href="contact.css" />
    <title>Formulaire de contact</title>
    </head>
    <body>
    <div id="corps">
    <?php if(empty($_POST))
    {
    	if($_GET["message"]=="ok")
    		$corps.="Votre mail a bien été envoyé, ainsi que votre adresse IP : ".$_SERVER['REMOTE_ADDR']."\r\n<br/>" ;
    	else
    		echo '<form method="post" action="contact.php"><fieldset><legend>Me contacter</legend><br/>
    		<label for="email">Votre adresse e-mail :</label><input type="text" name="email" id="email"/><br/><br/>
    		<label for="objet">Objet du message :</label><input type="text" name="objet" id="objet"/><br/><br/>
    		<label for="message">Message :</label><textarea name="message" id="message" cols="50" rows="10"></textarea><br/><br/>
    		<label for="question">Question anti-robots :</label> (Cette question est présente pour éviter le spam à l\'aide de ce script)<br/>
    		<input type="text" name="premiernombre" value="'.rand(0,100).'" size="1" readonly="readonly" /> <input type="text" name="secondnombre" size="1"
    		value="'.rand(100, 200).'" readonly="readonly" /> <input type="text" name="troisiemenombre" value="'.rand(0, 200).'" size="1" readonly="readonly" /><br/>
    		Recopiez les nombres contenus dans le premier et le troisième champ (ci-dessus) l\'un à la suite de l\'autre dans le champ ci-dessous :<br/>
    		<input type="text" name="question" id="question" size="4" /><br/><br/>
    		Votre adresse IP sera automatiquement envoyée quand vous enverrez votre message.<br/>
    		<input type="submit" name="Envoyer" value="Envoyer"/><br/><br/>
    		</fieldset></form>' ;
    }
    else
    {
    	$temp=array_map('trim', $_POST) ;
    	$post=array_map('htmlspecialchars', $temp) ;
    	$erreur='' ;
     
    	if(empty($post["email"]))
    		$erreur.="Vous n'avez pas rempli le champ \"Votre adresse e-mail\".<br/>" ;
    	if(empty($post["objet"]))
    		$erreur.="Vous n'avez pas rempli le champ \"Objet du message\".<br/>" ;
    	if(!empty($post["email"]) && !preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#', $post["email"]))
    		$erreur.="L'adresse e-mail que vous avez rentré est incorrecte.<br/>" ;
    	if(empty($post["message"]))	
    		$erreur.="Vous n'avez pas rempli le champ \"Votre message\".<br/>" ;
    	if($post["question"]!=$post["premiernombre"].$post["troisiemenombre"])
    		$erreur.="La réponse à la question anti-robots ne correspond pas à la réponse attendue !</a>" ;
     
    	if(empty($erreur))
    	{
    		if(mail('votre@adressemail.com', stripslashes($post["objet"]), stripslashes("Un visiteur vous a contacté :\nSon adresse e-mail est : ".$post["email"]." et son adresse IP : ".$_SERVER['REMOTE_ADDR']."
    		\n".$post["message"]), "From: Formulaire contact <$email>"."\r\n"."Reply-To: ".$post["email"]))
    			echo 'Votre mail a bien été envoyé, ainsi que votre adresse IP ! <br /><br />Nous vous répondrons, dans les meilleurs délais, Merci' ;
    	}
    	else
    		echo $erreur ;
    }
    ?>
    </div>
    </body>
    </html>
    ===

    Comme tu peux maintenant le constater, il n'y a que la partie (dans le body) qui se trouve ajoutée sur la nouvelle page du cms.

    Encore merci à toi ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/03/2011, 09h41
  2. [PHP 4] Formulaire mail php : caractères accentués remplacés
    Par adameteve dans le forum Langage
    Réponses: 3
    Dernier message: 31/10/2010, 13h04
  3. Caractères accentués et formulaire
    Par Azharis dans le forum ASP
    Réponses: 8
    Dernier message: 23/02/2009, 12h30
  4. Caractères accentués dans formulaire
    Par jyuzakumo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/04/2008, 13h52
  5. Formulaire mail et caractères accentués
    Par Yael dans le forum Langage
    Réponses: 13
    Dernier message: 30/03/2006, 09h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo