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

hanko38
Invité n'ayant pas de compte PHPfrance

28 juin 2011, 15:03

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>

ViPHP
ViPHP | 2577 Messages

28 juin 2011, 15:40

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.

hanko38
Invité n'ayant pas de compte PHPfrance

29 juin 2011, 11:05

merci!!!!!!!!

Mammouth du PHP | 2278 Messages

30 juin 2011, 08:04

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)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

charmail
Invité n'ayant pas de compte PHPfrance

30 juin 2011, 16:31

N'oublie pas non plus de rajouter des htmlspecialchars avant tes $_POST / $_GET

Mammouth du PHP | 2278 Messages

30 juin 2011, 16:55

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
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD