Page 1 sur 1

débutant qui se bat avec ses accents dans son formulaire

Posté : 28 juin 2011, 15:03
par hanko38
Hello, je suis en train de créer un formulaire avec un outil en ligne.
J'ai quelques bases en html mais rien en PHP.

Problème, mon formulaire n'affiche pas les accents et les mails que je reçois non plus
ex : Société
J'ai cru comprendre que les pb venait de charset ou quelquechose comme cela, j'ai fait plein de bidouilles mais rien.

Si une gentille personne peut m'aider ;-)

voici ma page,
<?php


$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
ini_set("error_reporting" , "E_ALL & ~E_NOTICE");
}

if (isset($_POST['envoi'])) {



session_start();

$_SESSION['champ1'] = $_POST['champ1'];
$_SESSION['champ2'] = $_POST['champ2'];
$_SESSION['champ3'] = $_POST['champ3'];
$_SESSION['champ4'] = $_POST['champ4'];
$_SESSION['champ5'] = $_POST['champ5'];
$_SESSION['champ6'] = $_POST['champ6'];
$_SESSION['champ7'] = $_POST['champ7'];
$_SESSION['champ8'] = $_POST['champ8'];
$_SESSION['champ9'] = $_POST['champ9'];
$_SESSION['zone_email1'] = $_POST['zone_email1'];

$_SESSION['zone_texte1'] = $_POST['zone_texte1'];


$flag_icone = 0;

if ($flag_icone == 0) {
$icone = "<b><font size=\"3\" face=\"Arial, Verdana, Helvetica, sans-serif\" color=\"#CC0000\">x</font></b>";
} else {
$icone = "<img src=\"images/icone.gif\"";
}

$flag_erreur = 0;
if ($flag_erreur == 0) {					

$email_dest = "[email protected]";
$sujet = "Téléchargement du catalogue";
$entetes ="MIME-Version: 1.0 \n";
	$entetes .="From: DIPLEX - Rayonnage - Plateforme - Cantilever<[email protected]>\n";
	$entetes .="Return-Path: DIPLEX - Rayonnage - Plateforme - Cantilever<[email protected]>\n";
	$entetes .="Reply-To: DIPLEX - Rayonnage - Plateforme - Cantilever<[email protected]>\n";
	$entetes .="Content-Type: text/html; charset=iso-8859-1 \n";
	$partie_entete = "<html>\n<head>\n<title>Formulaire</title>\n<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n</head>\n<body bgcolor=#FFFFFF>\n";


$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">SOCIETE = " . $_SESSION['champ1'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">DOMAINE D'ACTIVITE = " . $_SESSION['champ2'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Nom = " . $_SESSION['champ3'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Fonction = " . $_SESSION['champ4'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Adresse = " . $_SESSION['champ5'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">adresse ligne 2 = " . $_SESSION['champ6'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">ville = " . $_SESSION['champ7'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Code Postal = " . $_SESSION['champ8'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">TELEPHONE = " . $_SESSION['champ9'] . "</font><br>\n";
$partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre E-mail = " . $_SESSION['zone_email1'] . "</font><br>\n";
$partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">PROJET = " . $_SESSION['zone_texte1'] . "</font><br>\n";
					

					$fin = "</body></html>\n\n";
					
					$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_listes . $partie_boutons . $partie_cases . $partie_zone_texte . $fin;


					if (@!mail($email_dest,$sujet,$sortie,$entetes)) {
					echo("Envoi du formulaire impossible");
					exit();
					} else {

                    header("Location:cat.html");
                    exit();
                  } // Fin else
			    } // Fin du if ($flag_erreur == 0) {
			} // Fin de if POST
?>
<html>

<head>
<title>Formulaire</title><script language="JavaScript">


function verifSelection() {


if (document.mail_form.champ1.value == "") {
alert("Veuillez saisir le nom de votre société")
return false
} 

if (document.mail_form.champ2.value == "") {
alert("Veuillez saisir votre domaine d\'activité")
return false
} 

if (document.mail_form.champ3.value == "") {
alert("Veuillez saisir votre Nom")
return false
} 

if (document.mail_form.champ7.value == "") {
alert("Veuillez saisir votre ville")
return false
} 

if (document.mail_form.champ8.value == "") {
alert("Veuillez saisir votre code postal")
return false
} 

if (document.mail_form.champ9.value == "") {
alert("Veuillez saisir votre numéro de téléphone")
return false
} 

if (document.mail_form.zone_email1.value == "") {
alert("Veuillez Saisir votre adresse E-mail")
return false
}

invalidChars = " /:,;'"

for (i=0; i < invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.mail_form.zone_email1.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.mail_form.zone_email1.focus()
return false
}
}

atPos = document.mail_form.zone_email1.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (document.mail_form.zone_email1.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

periodPos = document.mail_form.zone_email1.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (periodPos+3 > document.mail_form.zone_email1.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

} // Fin de la fonction
</script>
</head><body><form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
  <div align="center"><img src="logo_Diplex_CMJN2.jpg" alt="Diplex"></div><br><table align="center" width="566" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="16"><div align="center">
  <font color="#CC0000" size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong><?php
if ($erreur_champ1) {
	  echo(stripslashes($erreur_champ1));
	  } else {
if ($erreur_champ2) {
	  echo(stripslashes($erreur_champ2));
	  } else {
if ($erreur_champ3) {
	  echo(stripslashes($erreur_champ3));
	  } else {
if ($erreur_champ4) {
	  echo(stripslashes($erreur_champ4));
	  } else {
if ($erreur_champ5) {
	  echo(stripslashes($erreur_champ5));
	  } else {
if ($erreur_champ6) {
	  echo(stripslashes($erreur_champ6));
	  } else {
if ($erreur_champ7) {
	  echo(stripslashes($erreur_champ7));
	  } else {
if ($erreur_champ8) {
	  echo(stripslashes($erreur_champ8));
	  } else {
if ($erreur_champ9) {
	  echo(stripslashes($erreur_champ9));
	  } else {
if ($erreur_email1) {
	  echo(stripslashes($erreur_email1));
	  } else {
if ($erreur_texte1) {
	  echo(stripslashes($erreur_texte1));
	  } else {
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
?>
    </strong></font>
    </div></td>
      </tr>
    </table>
<p align="center"></p><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">SOCIETé</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ1) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ1" type="text" value="<?=stripslashes($_SESSION['champ1']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">DOMAINE D'activité</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ2) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ2" type="text" value="<?=stripslashes($_SESSION['champ2']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">NOM</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ3) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ3" type="text" value="<?=stripslashes($_SESSION['champ3']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">FONCTION</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ4) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ4" type="text" value="<?=stripslashes($_SESSION['champ4']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">ADRESSE</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ5) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ5" type="text" value="<?=stripslashes($_SESSION['champ5']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">ADRESSE (SUITE)</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ6) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ6" type="text" value="<?=stripslashes($_SESSION['champ6']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">VILLE</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ7) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ7" type="text" value="<?=stripslashes($_SESSION['champ7']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">CODE POSTAL</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ8) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ8" type="text" value="<?=stripslashes($_SESSION['champ8']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">TELEPHONE</font></div></td>
	  <td align="center" valign="middle" width="30">
      <?php
	  if ($erreur_champ9) {
	  echo($icone);
	  }
	  ?>
      </td>
      <td><input name="champ9" type="text" value="<?=stripslashes($_SESSION['champ9']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">VOTRE E-MAIL</font></div></td>
      <td width="30" align="center" valign="middle">
	  <?php
	  if ($erreur_email1) {
	  echo($icone);
	  }
	  ?>
	  </td>
      <td><input name="zone_email1" type="text" value="<?=stripslashes($_SESSION['zone_email1']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140" valign="top"><div align="right"><font face="Verdana" size="2">VOUS AVEZ UN PROJET? DECRIVEZ LE NOUS EN QUELQUES LIGNES</font></div></td>
      <td width="30" align="center" valign="top">
	  <?php
	  if ($erreur_texte1) {
	  echo($icone);
	  }
	  ?>
	  </td>
      <td><textarea name="zone_texte1" cols="45" rows="10"><?=stripslashes($_SESSION['zone_texte1']);?></textarea></td>
    </tr></table><table width="566" border="0" align="center"><tr>
<td valign="top"><div align="center">
  <input type="submit" name="envoi" value="Envoyer">
        </div></td></tr></table><div align="center"><input name="nbre_fichiers" type="hidden" id="nbre_fichiers" value=""></div></form></body></html>

Re: débutant qui se bat avec ses accents dans son formulaire

Posté : 28 juin 2011, 15:40
par Mazarini
Bonjour,

Il faut que l'outil que tu utilises pour faire ton code et les déclarations de type "Content-Type: text/html; charset=iso-8859-1" soient cohérentes.

Re: débutant qui se bat avec ses accents dans son formulaire

Posté : 29 juin 2011, 11:05
par hanko38
merci!!!!!!!!

Re: débutant qui se bat avec ses accents dans son formulaire

Posté : 30 juin 2011, 08:04
par sirakawa
Pour les caractères "bizarres":
Je pensais que, aux jours de portes, toutes les pages commençaient par une incantation du genre:
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="fr">

<head>
	<META http-equiv='Content-Type' content='text/html; charset=utf-8'>
</head>
Il me semble préférable d'utiliser utf-8, et surtout de régler le navigateur (Affichage / Encodage des caractères...)

Hors-sujet
Remarques cosmétiques
if (isset($_POST['envoi'])) {
if ($flag_erreur == 0) {
...
if (@!mail($email_dest,$sujet,$sortie,$entetes)) {
echo("Envoi du formulaire impossible");
exit();
} else {
header("Location:cat.html");
exit();
} // Fin else
} // Fin du if ($flag_erreur == 0) {
} // Fin de if POST
serait plus lisible:
if (isset($_POST['envoi'])) 
{ 
    if ($flag_erreur == 0) 
    {
        ...
        if (@!mail($email_dest,$sujet,$sortie,$entetes)) 
        {
           echo("Envoi du formulaire impossible");
           exit();
        } 
        else 
        {
             header("Location:cat.html");
             exit();
        } // Fin else
    } // Fin du if ($flag_erreur == 0) {
} // Fin de if POST
Les messages d'erreur:
et pour la cascade des if suivante, n'y aurait-il pas moyen de mettre un switch nettement plus lisible?

Hache Toute Mangeaille Lentement
Enfin, les feuilles de styles CSS permettent une plus grande souplesse de la présentation (surtout quand on veut en changer l'aspect)

Re: débutant qui se bat avec ses accents dans son formulaire

Posté : 30 juin 2011, 16:31
par charmail
N'oublie pas non plus de rajouter des htmlspecialchars avant tes $_POST / $_GET

Re: débutant qui se bat avec ses accents dans son formulaire

Posté : 30 juin 2011, 16:55
par sirakawa
Moi, étant utf-8, je préfère htmlentities($var, ENT_QUOTES, "UTF-8");
ça évite les ennuis avec les noms du genre "d'au coin de l'arbre" quand il faut les passer à une base Mysql