Formulaire vers email

Eléphant du PHP | 52 Messages

28 mars 2008, 16:07

Salut à tous 8-)

Je souhait créai un formulaire. Un formulaire qui permet d'envoyer une seule donnée vers mon email msn.

Voici un exemple de mon formulaire :
*Tu veux un site toi aussi ? C'est simple, choisis un titre :
http://www.[ICI LE FORMULAIRE].monsite.com/

Envoyer
* Name du formulaire = sitename

Ceci c'est déjà fait mais voici mon code php :
<?php

$mail = 'mon email';

if (isset($_POST['sitename']))
{
	echo = 'Ton site est value="' . $_POST['sitename'] . '"';
	
}
if (isset($_GET['$mail'])) {
	echo = "Ta demande de site à bien été envoyer";
}

?>
Mais fonctionne pas je pense -_- Alors si vous pouvez m'aider sa serait cool :)
Merci à vous... 8-)

Mammouth du PHP | 1353 Messages

28 mars 2008, 16:25

Bonjour,

je ne comprend pas ou se situe ton probleme.

Pour l'instant si ton formulaire envoie vers cette page que tu nous a montré et qu'il contient un champ "sitename" alors tu recevras en $_POST la valeur de sitename... Il te faudra donc envoyer un mail avec par exemple la fonction mail() en direction de ton adresse (définie dans $mail)...

Après l'envoi du mail tu peux éventuellement faire une redirection vers cette même page en mettant header("Location: ".$_SERVER['PHP_SELF']."?mail_envoye=1);

Alors dans ce cas après l'envoi de l email tu retournera sur cette même page avec un $_GET["mail_envoye"] qui pourra te dire que tu as envoyé ton mail avec succès...

je ne comprend pas ou est ta question et ou tu envoies le mail dans ton code...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 52 Messages

28 mars 2008, 16:34

Non aufaite je voulai juste que le visiteur, dès qu'il rentre une valeur dans le formulaire et qu'il clique sur envoie, la valeur est envoyé directement vers mon Mail et là que je puisse faire sa demande. :wink:

Mammouth du PHP | 1353 Messages

28 mars 2008, 16:40

A ce moment la il faut voir sur le code du formulaire.
Sur la page de la demande il te faut un formulaire du style
<form name="demande_siteName" action="ta_page_de_destination.php" method="post">
http://www.
<input type="text" name="sitename" value="Nom du site"/>
.monsite.com/<br/> 
<input type="submit" value="Envoyer la demande"/>
</form>
Ensuite dans ta page de destination (qui peut être la même page) tu récupères la valeur voulu par le visiteur avec la variable $_POST["sitename"] et tu t'envoies un mail avec la fonction mail()
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 52 Messages

28 mars 2008, 16:42

Ok, mais dans un point je te suis pas. Si ont peux mettre sa dans la meme page, dans action qu'est que je met ? Vu que le php sera dans le meme fichier....

EDIT : Se code est bon ? J'ai repris la fonction mail()
<?php 
     $headers ='From: "nom"<[email protected]>'."\n"; 
     $headers .='Reply-To: [email protected]'."\n"; 
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
     $headers .='Content-Transfer-Encoding: 8bit'; 

     $message ='<html><head><title>Creer sont site</title></head><body><form name="demande_siteName" action="ta_page_de_destination.php" method="post">http://www.<input type="text" name="sitename" value="Nom du site"/>.monsite.com/<br/><input type="submit" value="Envoyer la demande"/> </form></body></html>'; 

     if(mail('[email protected]', 'Sujet', $message, $headers)) 
     { 
          echo 'Le message a bien été envoyé, ta demande sera bientôt prise en compte.'; 
     } 
     else 
     { 
          echo 'Le message n\'a pu être envoyé'; 
     } 
?> 

Mammouth du PHP | 1353 Messages

28 mars 2008, 16:51

Dans action en fait tu vas mettre l'url de la page qui contient ce code, soit en dur soit en utilisant la valeur $_SERVER["PHP_SELF"] qui renvoi la valeur de la page courante.

Si tu fais cela il va falloir faire la différence entre la première fois que tu arrives sur la page et la fois ou tu y arrives apres avoir validé le formulaire. Pour cela tu peux utiliser la fonction isset() de la valeur $_POST["sitename"]. En effet si cette valeur existe alors le formulaire a été validé.

Dans ta page, AVANT d'éxécuter l'affichage, tu peux faire un test
<?php
if(isset($_POST["sitename"]) && !empty($_POST["sitename"])) //si la valeur existe et n'est pas vide
{
//code pour envoi de l'email
//puis, redirection vers une autre page ou affichage d'un message
}
?>
//reste de la page...

EDIT : je comprend plus rien ;). Tu veux envoyer cette page par mail ou recevoir par mail la demande des visiteurs d'un site ??
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 52 Messages

28 mars 2008, 16:56

Ok je commence à comprendre, bon je vais faire un test ensuite selon le résultat je vais édité mon post pour pas faire un flood... de 24h :)

EDIT: Recevoir la demande du visiteur par mon mail

EDIT2: Voila le test:

Warning: Cannot modify header information - headers already sent by (output started at /home/darksulfura/www/index.php:2) in /home/darksulfura/www/index.php on line 15

la ligne 15 :
	header("Location: ".$_SERVER['PHP_SELF']."?mail_envoye=1");
tu peux faire le test à cette adresse :
http://www.darksulfura.monespace.net/

Mammouth du PHP | 959 Messages

29 mars 2008, 17:39

Warning: Cannot modify header information - headers already sent by (output started at /home/darksulfura/www/index.php:2) in /home/darksulfura/www/index.php on line 15
Cette erreur indique que ton
header("Location: ".$_SERVER['PHP_SELF']."?mail_envoye=1");
et placer après un espace ou du code html par exemple...
AUCUN ESPACES OU CODE ICI<?php
header("Location: ".$_SERVER['PHP_SELF']."?mail_envoye=1");
...
?>
;)

Eléphant du PHP | 52 Messages

03 avr. 2008, 10:00

Donc si je comprend bien, je dois placer ce code après mon code de formulaire c'est bien ça ?
<?php
header("Location: ".$_SERVER['PHP_SELF']."?mail_envoye=1");
?>
Mais lorsque je fais ceci, je retombe toujours sur la même ereur... :roll:

Mammouth du PHP | 1353 Messages

04 avr. 2008, 10:18

Donc si je comprend bien, je dois placer ce code après mon code de formulaire c'est bien ça ?
Au contraire ;)

Entre le début de ta page et la commande "header" il ne peut y avoir aucun affichage sur la page.
En gros tu peux uniquement exécuter tes commandes php et sql sans aucune sortie (pas de echo ou print_r ou quoi que ce soit) et éviter tout espace mal venu dans le code.
Tell me and I forget. Teach me and I remember. Involve me and I learn.