8792 sujets

Développement web côté serveur, CMS

Bonjour,

Je ne comprend pas ce qui cloche dans mon code, je n' arrive pas à réupérer l' adresse email entrée dans un formulaire et l' afficher en tant que message dans le message que je reçois.
Voici mon code:


<?php $adress = "monmail@hotmail.fr";
$sujet = "Inscription newsletter";
$message = $_POST['email'];
mail($adress,$sujet,$message);
?>

<!--formulaire html-->

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
 name="envoyer" enctype="text/plain">
 
Votre email: 
 <input name="email" type="text" id="email" />
 <input type="submit" name="Submit" value="envoyer" />
</form>



Je reçois bien l' email , avec le sujet indiqué, mais pas l' email ($message = $_POST['email'];)

Merci de me dire ce qui ne va pas.
Modifié par sibile (04 May 2007 - 14:26)
Merci mais j' ai essayé, ça ne fonctionne pas.
Est-ce-qu' il ne faut pas déclarer les $_POST avant de s' en servir?

Ou mettre le code php après le formulaire html?
OK. Déjà je ne sais pas si tu le sais mais dans ton exemple, l'email est envoyé avant que tu n'appuies sur le bouton valider ; en fait, dès que tu affiches la page.

Tu n'as pas non plus besoin de déclarer les $_POST parce que ce sont des superglobales.

Maintenant, il faut voir si ton erreur vient de la fonction mail() ou pas. Je pense que non puisqu'il part bien mais la variable $message est à blanc. Donc ça vient des données $_POST.
Faut pas hésiter à lister leur contenu pour mieux visualiser ce que tu reçois. print_r() est ton amie Smiley cligne

Essaie avec ça déjà et vois ce que ça donne :
<?php
if( !empty($_POST) )
{
	$adress = "monmail@hotmail.fr";
	$sujet = "Inscription newsletter";
	
	print_r($_POST);	
	//mail($adress, $sujet, $_POST['email']);
}
?>

<!--formulaire html-->
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="envoyer">
	<p>Votre email : <input name="email" type="text" id="email" /> <input type="submit" name="Submit" value="envoyer" /></p>
</form>


PS : évite les double-assignation du genre $message = $_POST['machin'] parce que ça ne sert à rien si ce n'est gaspiller de la mémoire. C'est un peu comme si tu avais besoin d'un balais, que tu en achètes deux et n'en utilises qu'un.
ok, je vais essayer de tester comme ça.
Oui, je sais, j' ai un message à chaque fois que je reloade la page lol!
Mais j' ai vu comment faire ça, chaque chose en son temps!

Il y a un problème dans ma variable POST oui.

A priori la syntaxe est bonne... je suis sûre que ce n' est rien du tout comme erreur!!!

Merci de ton aide je te tiens au courant du résultat !!!

Là je vais manger, je laisse tomber 10 mns ce ?!/,dkjdljf !!!
Ouais n'oublie pas de mâcher Smiley langue

Pour ma part ce code fonctionne sur mon PC donc à voir.
Modifié par The Jedi (04 May 2007 - 15:36)
Salut

J' ai testé, le problème était tout simplement:
enctype="text/plain

Dans la balise form.....



Ca m' a toujours paru superflu ces trucs là!!!
Depuis que je l' ai enlevé r_print affiche bien toutes les données.
Incroyable!!!!!


Moralité: d' abord le minimum et ensuite le maximum !!
J'avoue que je n'ai jamais utilisé cet encodage. Je le spécifie pour les transferts de fichiers (sinon tu ne récupères pas les upload dans la superglobale $_FILES.

Un mystère de levé Smiley cligne
Je suis programmeur, entre autre. Y'a tellement de choses à apprendre sur le Web mais pas assez de temps pour tout faire Smiley cligne