Erreur Code Formulaire Mail PHP

[Résolu/Fermé]
Signaler
-
Messages postés
387
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2008
-
Bonjour,

Voilà j'ai tenté de prendre sur le net un formulaire écrit en php pour l'envoi de mail via mon site web.
Ce formulaire avait déjà été utilisé sur un autre site et fonctionnait très bien.
Le copier coller apparemment ne suffit pas à le faire marcher sur le nouveau. Enfin tout n'est pas perdu, je recois bien un mail retour sur l'adresse mail indiqué mais le renvoi ne se fait pas sur la page de remerciement.


Je vous copie ici le code de la page "contact.php" qui est censé renvoyer sur la page result.html (qui se trouve dans le même dossier)




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php

// N'afficher que les erreurs, pas les avertissements...
ini_set("error_reporting", "E_ALL & ~E_NOTICE");

// Adresse de réception du formulaire
$email_dest = "contact@famereadyartists.com";

if ($_POST['envoi']) {

// E-mail headers:
$headers ="MIME-Version: 1.0 \n";
$headers .="From: Fame Ready Artists<contact@famereadyartists.com>\n";


$headers .="Content-Type: text/html; charset=iso-8859-1 \n";

$subject = "Contact Anacruz";

$partie_entete = "<html><head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
</head>
<body bgcolor=#FFFFFF>";

for ($a=1; $a<= $_POST['nbre_champs_texte']; $a++) {
$partie_champs_texte .= "<font face='Verdana' size='1' color='#000000'>" . $_POST['titre_champ'.$a] . " = " . $_POST['champ'.$a] . "</font><br>";
}

if ($_POST['nbre_zone_email'] != 0) {
$partie_zone_email = "<font face='Verdana' size='1' color='#000000'>" . $_POST['titre_email'] . " = " . $_POST['zone_email'] . "</font><br>";
}

if ($_POST['nbre_zones_texte'] != 0) {
$partie_zone_texte = "<font face='Verdana' size='1' color='#000000'>" . $_POST['titre_zone'] . " = " . $_POST['zone_texte'] . "</font><br>";
$partie_zone_texte = stripslashes($partie_zone_texte);
}

$fin = "</body></html>";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_zone_texte . $fin;

// Send the e-mail
if (@!mail($email_dest,$subject,$sortie,$headers)) {
echo("Envoi du formulaire impossible");
} else { // Closing if !mail...

// Renvoi à la page de remerciement
header("Location: result.html");
exit();

} // Fin du else
} // Closing if edit
?>
<html>
<head>
<LINK REL="SHORTCUT ICON" HREF="/favicon.ico";>

<TITLE>Fame Ready Artists</TITLE>
<META NAME="Robots" CONTENT="index, follow, all">
<META NAME="Generator" CONTENT="Macromedia Dreamweaver">
<style TYPE="text/css">
BODY {
	scrollbar-face-color: #3A1910;
	scrollbar-shadow-color: #3A1910;
	scrollbar-highlight-color: #3A1910;
	scrollbar-3dlight-color: #3A1910;
	scrollbar-darkshadow-color: #3A1910;
	scrollbar-track-color: #3A1910;
	scrollbar-arrow-color: #FFFFFF;
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
A:link 
{
COLOR: #966666; TEXT-DECORATION: none
}
A:visited 
{
COLOR: #966666; TEXT-DECORATION: none
}
A:hover 
{
COLOR: #ffffff; TEXT-DECORATION: none
}
.Style1 {
	font-size: 10px;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
textarea { 
color:#ffffff; 
background-color:transparent; 
size:245px;
font-size:10px; 
font-family:verdana;
border: 1px solid #FFFFFF;
overflow:hidden;
} 
INPUT { 
color:#FFFFFF; 
background-color:transparent; 
font-size:10px; 
font-family:verdana;
border: 1px solid #FFFFFF;
} 
.Style4 {font-size: 10px}
</style>

<script language="JavaScript">function verifSelection() {if (document.mail_form.zone_email.value == "") {
alert("Veuillez renseigner votre adresse email")
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_email.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.mail_form.zone_email.focus()
return false
}
}

atPos = document.mail_form.zone_email.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_email.focus()
return false
}

if (document.mail_form.zone_email.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_email.focus()
return false
}

periodPos = document.mail_form.zone_email.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_email.focus()
return false
}

if (periodPos+3 > document.mail_form.zone_email.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_email.focus()
return false
}} // Fin de la fonction

</script>



</head>


<body text="#000000" style="background-color:transparent">
 <table width="340" border="0" cellspacing="0" cellpadding="0">
   <tr>
     <td>
       <p><br>
        <img src="../multimedia/icone/contact.png" width="142" height="52"></p>
       <form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
         <table width="330" border=0 align="center" >
           <tr>
             <td width="145"><span class="Style4"><font face="Verdana, Arial, Helvetica, sans-serif">nom : </font></span></td>
             <td><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                 <input name="champ1" type="text" size="31">
             </font></div></td>
           </tr>
           <tr>
             <td><span class="Style4"><font face="Verdana, Arial, Helvetica, sans-serif">pr&eacute;nom : </font></span></td>
             <td><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                 <input name="champ2" type="text" size="31">
             </font></div></td>
           </tr>
           <tr>
             <td><span class="Style4"><font face="Verdana, Arial, Helvetica, sans-serif">adresse email :</font></span></td>
             <td><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
                 <input name="zone_email" type="text" size="31">
             </font></div></td>
           </tr>
           <tr>
             <td valign="top"><span class="Style4"><font face="Verdana, Arial, Helvetica, sans-serif">message :</font></span></td>
             <td>
               <div align="left">
                 <textarea name="zone_texte" cols="33" rows="9"></textarea>
             </div></td>
           </tr>
           <tr>
             <td colspan="2" valign="top"><div align="center">
               <br>
               <input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="2">
          <input name="nbre_zones_texte" type="hidden" value="1">
          <input name="nbre_zone_email" type="hidden" value="1">
          <input name="titre_champ1" type="hidden" value="Nom">
          <input name="titre_champ2" type="hidden" value="Prénom">
          <input name="titre_email" type="hidden" value="Adresse email">
          <input name="titre_zone" type="hidden" value="Message">          
  <input type="submit" name="envoi" value="Envoyer">
</div></td>
           </tr>
         </table>
       </form>
       </td>
   </tr>
</table>
</body>
</html>






J'aurai aimé savoir si vous voyez une quelconque erreur ou si c'est mon nouvel hébergement qui n'accepte pas ce genre de code ... Ca serait bizarre car c'est le même que pour un autre site où ça fonctionne, peut etre n'ai je souscrit au même option ?...
Je voulais préciser qu'il ne s'agissait pas de free car il me semble que certaines fonctions ne sont pas acceptées chez eux.

Que dois-je faire ou modifier ?

Merci d'avance et bonne année à tous,
Tony

9 réponses

Messages postés
387
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2008
20
Peut-être que ton hebergeur ne prend pas en compte la fonction mail() mais vire ini_set(), je pense que tu pourras voir ce qui cloque en le retirant.
Bonsoir bibi675,

merci beaucoup pour ta réponse.
Je pense que cet hébergeur (hosteur) supporte cette fonction car je l'utilise déjà sur un autre site mais peut etre devais acheter des options pour faire fonctionner cette fonction? (je vais me renseigner quand ils reprendront du service ^^)

Sinon j'ai suivi ce que tu m'as dit en suppriant la fonction et je recois cette erreur :

Warning: Cannot modify header information - headers already sent by (output started at /home/famere72/public_html/Anacruz/page/contact.php:2) in /home/famere72/public_html/Anacruz/page/contact.php on line 49

la ligne 49 correspond à ça dans le code de la page contact.php :

header("Location: result.html");


ce qui m'etonne moyennement puisque je recois bien le mail envoyé mais je n'arrive pas justement à afficher cette page result.html

Est ce que vous sauriez me dire à quoi correspond cette erreur?

Merci d'avance et bonne soirée à tous,
Tony
Cette erreur est due au fait que tu envoie au navigateur des elements HTML balises etc.. avant le header

descend le <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

juste après le ?>

avant <html>


et es tu sur que ton fichier remerciement.html est bien dans le même rep que ton script ?

@lain
C'est moi qui te remercie Alain mais le problème persiste malgré ce changement.

Oui la page de remerciement est bien dans le même dossier.
Ce qui est étrange c'est que ce code tel quel fonctionne très bien sur un autre site que j'ai créé aussi ... avec le meme hebergeur ^^

Bizarre....
Messages postés
387
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2008
20
Salut,
Le principe du header c'est d'être une entête donc une entête tu va la mettre en premier sauf que la tu envoie le header après avoir écrit du HTML, sur cette page si tu veux faire une redirection et y mettre du texte, il faut utiliser du javascript ou la balise meta > refresh.

Voici le code JavaScript :
<script type="text/javascript">
<!--
window.location = "url_de_ta_page";
//-->
</script>

@++
bonjour bibi675,

où dois je placer ce morceau de code ?

et comment expliquer le fait que ce code tel quel fonctionne très bien sur un autre site ?

A bientôt,
Messages postés
387
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2008
20
Peut-être que ton hebergeur n'accepte pas le header de redirection...
Remplace ça :
// Renvoi à la page de remerciement
header("Location: result.html");

Par ça :
echo '<script type="text/javascript">
<!--
window.location = "result.html";
//-->
</script>';
Super !

Comme ça ça fonctionne bien... je recois bien le mail et la redirection se fait niquel !

Est ce que le fait d'utiliser du javascript ca empeche certains utilisateurs à envoyer le mail si une activation qcq sur le pc n'est pas faite?

J'ai mis cette demande en résolue puisque ça fonctionne.

Merci encore,
Tony
Messages postés
387
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2008
20
Oui, si un utilisateur n'a pas activer JavaScript la redirection ne fonctionnera pas mais tu recevra bien le mail.