Erreur sur un envoi de formulaire via PHP

Résolu/Fermé
byothe Messages postés 45 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 24 novembre 2020 - 2 mars 2007 à 11:14
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 - 2 mars 2007 à 23:05
Bonjour,

J'ai un petit problème. Je cherche à faire un formulaire qui m'envoie un mail directement sans passer par les logiciels de messagerie. J'ai donc récupéré des bouts de code PHP que j'ai adaptés à ma sauce.
Mais cela ne fonctionne pas... Est-ce que vous voyez quleque chose qui pourrait expliquer le dysfonctionnement.
J'obtient l'erreur suivante :
"Notice: Undefined index: action in XXX\abonnement2.php on line 2"

<?php
if($_POST['action'] == 'submitted')
{
	$adress = "glaverne@XXX.com";
	$sujet = "Abonnement / Désabonnement au reporting Mensuel";
	$message = "Une demande d'abonnement ou de désabonnement au reporting à été effectuée depuis le site www.roche-brune.com :\n";
	$message .= "Nom: {$_POST['nom']}\nPrénom: {$_POST['prenom']}\nSociété: {$_POST['societe']}\nE-mail: {$_POST['email']}\n";
	$message .= "ABonnement / Désabonnement : {$_POST['reporting']}\n";
	$entete ="From: {$_POST['email']}\n";
	mail($adress, $sujet, $message, $entete);
	//page de sortie
	$insertGoTo = "/abonnement_validation.php";
	if (isset($HTTP_SERVER_VARS['QUERY_STRING']))
		{
    	$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
		$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
		}
	header(sprintf($insertGoTo));
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Abonnement / Désabonnement au reporting mensuel</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="design2.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function verif_champs()
{
	if(document.forml.nom.value == "")
	{
		alert("Veuillez entrer votre nom SVP");
		document.forml.nom.focus();
		return false;
	}
	if(document.forml.prenom.value == "")
	{
		alert("Veuillez entrer votre Prénom SVP");
		document.forml.prenom.focus();
		return false;
	}
	if(document.forml.email.value == "")
	{
		alert("Veuillez nous communiquer votre adresse email pour que nous puissons vous inscrire sur notre liste de diffusion.");
		document.forml.email.focus();
		return false;
	}
	if(document.forml.email.value.indexOf('@') == -1)
	{
		alert("Adresse Email invalide!");
		document.forml.email.focus();
		return false;
	}
	if(document.forml.email.value.length <7)
	{
		alert("Adresse Email invalide!");
		document.forml.email.focus();
		return false;
	}
}
</script>
</head>

<body>
<form name="forml" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" onSubmit="return verif_champs()">
  <table border="0">
                        <tr> 
                          <td> <p class="titreForm">Abonnement au reporting mensuel</p>
                            <Fieldset id="formulaire">
                            
        <p><b><font size="1"> Nom :</font> </b> 
                              <input name="nom"size=40 maxlength=40>
                              <b><font size="1"><br>
                              </font></b> <b><font size="1"> Prénom :</font> </b> 
                              <input name="prenom"size=40 maxlength=40>
                              <b><font size="1"> <br>
                              Société :</font> </b> 
                              <input name="societe"size=40 maxlength=40>
                              <b><font size="1"><br>
                              e-Mail :</font> </b> 
                              <input name="email"size=40 maxlength=40>
                              <br>
                              <br>
                              <input type="radio" name="reporting" value="Recevoir le reporting tous les mois" checked>
                              <font size="2">Recevoir le reporting tous les mois</font><br>
                              <input type="radio" name="reporting" value="Ne plus recevoir le reporting">
                              <font size="2">Ne plus recevoir le reporting</font></p>
                            <div align="center"> 
                              <input type="hidden" name="action" value="submitted">
							  <input type="button" value="Envoyer" onClick="Envoyer(this.form)" style="background:#A1BEFF font:1.2em "Trebuchet MS", Verdana, sans-serif font-weight: bold">
                              <input type="reset" name="Submit" value="Effacer" style="background:#A1BEFF font:1.2em "Trebuchet MS", Verdana, sans-serif font-weight: bold">
                              <p> </p>
                            </div>
                            </fieldset	></td>
                        </tr>
                      </table>
                    </form>
</body>
</html>


Merci beaucoup pour votre aide !

3 réponses

bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
2 mars 2007 à 13:01
salut. il te manque un tout petit bout de code :
if(isset($_POST['action']))
{
  if($_POST['action'] == 'submitted')
 ...
}

en effet, la première fois que tu charges la page, la variable $_POST['action'] n'existe pas, d'où obligation de tester son existance avant d'effectuer un un test dessus.
et voiloù
0
byothe Messages postés 45 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 24 novembre 2020 27
2 mars 2007 à 13:23
Merci !!
Ca corrige deja le probleme de l'undefined index: action.

Cependant dans la barre de message de IE 6 en bas cela me met qu'il y'a une erreur sur la page et quand j'appuie sur le bouton envoyer il ne se passe strictement rien.
0
lefou4 Messages postés 73 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 5 mai 2010 44 > byothe Messages postés 45 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 24 novembre 2020
2 mars 2007 à 13:33
Si le message est dans la barre de message de IE alors c'est un problème avec ton javascript.

Petit conseil : fais tes tests côté serveur (donc en php) car si l'internaute désactive le javascript dans son navigateur il parviendra à envoyer tout de même le message (et cela même s'il y a une erreur !!!)

Sinon pour voir l'erreur javascript double-clique sur l'icône dans la barre de message.
0
byothe Messages postés 45 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 24 novembre 2020 27 > lefou4 Messages postés 73 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 5 mai 2010
2 mars 2007 à 13:47
ben pour l'instant je teste mes pages avec EasyPhp 2.0 en local

et l'erreur javascript me dit :

Ligne : 71
Car : 1
Erreur : Objet attendu
Code : 0
URL : http://127.0.0.1/XXX/abonnement2.php

??
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
2 mars 2007 à 14:05
heu, désolé, mais j'ai ie6 aussi mais je n'ai pas d'erreur javascript renvoyée par le navigateur.
0
byothe Messages postés 45 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 24 novembre 2020 27
2 mars 2007 à 14:23
Tu veux dire que ca marche pour toi ??
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
2 mars 2007 à 23:05
toutes mes confuses !! il va falloir que je m'achète des yeux !
c'est ton bouton envoyer qui met la grouille : il faut que tu le déclare de type submit et sans action :
<input type="submit" value="Envoyer" style="background:#A1BEFF font:1.2em  ...etc

et là, ça va fonctionner.
0