Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/09/2011, 19h08   #1
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Par défaut formulaire donnees email

bonjour,

j'aimerais recuperer des donnees de formulaire puis envoyer les données par mail à une personne précise.

J'ai réalisé ceci:


page "index.php"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html PUBLIC "–//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1–strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	<head>
		<title>Accueil</title>
		<meta http–equiv="Content–Type" content="text/html; charset=utf–8" />
		<link rel="stylesheet" media="screen,print,handheld" type="text/css" title="CDG11" href="css/page_principale.css" />
		<script src="fonction_java.js" type="text/javascript"></script>
 
	</head>
	<body>
 
			<form method=POST action=formmail.php >
 
					<input type=hidden name=subject value=formmail>
					<table>
					<tr><td>Votre Nom:</td>
						<td><input type=text name=realname size=30></td></tr>
					<tr><td>Votre Email:</td>
						<td><input type=text name=email size=30></td></tr>
					<tr><td>Sujet:</td>
						<td><input type=text name=title size=30></td></tr>
					<tr><td colspan=2>Commentaires:<br>
					  <textarea COLS=50 ROWS=6 name=comments></textarea>
					</td></tr>
					</table>
					<br> <input type=submit value=Envoyer> -
						 <input type=reset value=Annuler>
					</form>
 
 
 
   </body>
</html>

page "formmail.php"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$TO = "mathieu.pradel@laposte.net";
 
$h  = "From: " . $TO;
 
$message = "";
 
while (list($key, $val) = each($HTTP_POST_VARS)) { $message .= "$key : $val\n";}
 
mail($TO, $subject, $message, $h);
 
//Header("Location: http://<URL de la page de remerciement>");
 
?>

cela m'affiche comme erreur ceci:

Warning: Variable passed to each() is not an array or object in C:\Users\Pierre\Desktop\test_php\Formulaire_mail\formmail.php on line 8

Notice: Undefined variable: subject in C:\Users\Pierre\Desktop\test_php\Formulaire_mail\formmail.php on line 10

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Users\Pierre\Desktop\test_php\Formulaire_mail\formmail.php on line 10

donc si quelqu'un pouvais m'aider merci!
et bonne soirée
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 21h18   #2
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
Voici ton code corrigé
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$TO = "mathieu.pradel@laposte.net";
 
$h  = "From: " . $TO;
 // utilise l'operateur ternaire qui equivaut à if(isset($variab) ) {} else {}
$subject = isset($_POST['subject']) ? $_POST['subject'] : '';
$message = isset($_POST['message']) ? $_POST['message'] : '';
while (list($key, $val) = each($_POST)) { 
	$message .= "$key : $val\n";
}
 
mail($TO, $subject, $message, $h);
 
//Header("Location: http://<URL de la page de remerciement>");
 
?>
pour la fonction mail tu doit editer ton fichier php.ini
et modifier la section mail selon ton serveur SMTP
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = admin@localhost
CORDIALEMENT
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 12h46   #3
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
merci pour le corrigé par contre j'ai pas compris à partir du fichier php.ini??
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 15h00   #4
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
cette cection se trouve dans le fichier php.ini
[mail function]

SMTP = localhost
// Remplace localhost par le serveur smtp de ton fai par exemple
SMTP = smtp.gmail.com
// si tu ne connait pas l'adresse du serveur SMTP de ton fai tu peut consulter une liste dispo sur la toile

smtp_port = 25 // reste inchangeable

sendmail_from = admin@localhost
// Remplace admin@localhost par ton adresse électronique
sendmail_from = tonpseudo@gmail.com
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 15h35   #5
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
mais le contenu du fichier php.ini c'est quoi?
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 15h38   #6
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
c'est le fichier de configuration de php il accessible via :
easyphp =>clic droit configuration=>php
wamp =>clic gauche =>php=>php.ini
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h02   #7
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
ok et merci je commence à y voir plus clair mais quand tu parle du serveur je vois pas trop parce que moi je suis avec esay php j'ai moi donc en localhost

SMTP = localhost
// Remplace localhost par le serveur smtp de ton fai par exemple
SMTP = smtp.gmail.com
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h12   #8
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
avec localhost si tu ne dispose pas de serveur smtp en local (c'est a dire sur ta machine) la fonction mail ne marchera pas mais si tu le remplace par le serveur smtp de ton fai la fonction mail utilisera celui-ci pour envoyé le mail donc dans l'exemple smtp.gmail.com
mais si veux plus d'ample information sur l'envoie de mail je te conseil ce tutoriel
http://stephaneey.developpez.com/tut...php/phpmailer/
c'est une class qui va t'éviter d'avoir à éditer ton fichier php.ini et aussi de ne pas avoir tes mail comme spam surtout dans le cas de hotmail
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h30   #9
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
ok mais le serveur en smtp je dois le changer par rapport à ma connexion internet (je suis j'ai neuf) ou par rapport à ma boîte de messagerie (je suis à la poste)?
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h36   #10
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
par rapport à ta boite de messagerie
comme dans l'exemple si tu est chez gmail tu configure comme suit:
SMTP = smtp.gmail.com
sendmail_from = tonpseudo@gmail.com
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 16h43   #11
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
je suis desolé et j'ai tout changé mais ça me marque une erreur:

Warning: mail() [function.mail]: SMTP server response: 550 5.1.0 <deded <mathieu.escandre@laposte.net>> '@' or '.' expected after 'deded' in C:\Users\Pierre\Desktop\test_php\Formulaire_mail2\traitement.php on line 50
Une erreur est survenue lors de l'envoi du formulaire par email

a la ligne 50 j'ai ça:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
  echo $msg_ok;
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
 
?>
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 17h18   #12
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
edite ce code si ca ne fonctionne pas donc il te faut authentifier au pres de ton fai ce qui requiere que tu utilise la class phpmailer que j'ai citer tantôt
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$headers ='From: "nom"<adresse@fai.fr>'."\n";
     $headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";
     $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';
 
     if(mail('adresse_du_destinataire@fai.fr', 'Sujet', 'Message de test', $headers))
     {
          echo 'Le message a bien été envoyé';
     }
     else
     {
          echo 'Le message n\'a pu être envoyé';
     }
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 17h48   #13
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
j'ai essayé il me marque toujours la même erreur et c'est quoi la class phpmailer?
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 18h00   #14
Candidat au titre de Membre du Club
 
Homme
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 12
Points : 12
c'est une excelente class (POO) qui permet d’envoyer facilement les mails et va gerer pour toi l'authetification au pres du serveur smtp si tu lui fournit ton adresse mail et ton mot de pass
voici un tutoriel qui explique son utilisation :
http://stephaneey.developpez.com/tut...php/phpmailer/
thunder413 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2011, 18h44   #15
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
ok je vais regarder ça et encore merci!
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h25   #16
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Au vue de ton code, Peter11, ça ne serait pas du Lauyan Toweb, par hasard ? Sinon, $HTTP_POST_VARS, ça fait longtemps qu'elle a été remplacée par $_POST...
Et modifier le php.ini, ce n'est possible qu'en local (Easyphp ou Wamp).
Sinon, dans le formulaire html, ça marche peut-être comme ça, mais moi, j'aurais mis des " :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form method="POST" action="formmail.php" >
 
					<input type="hidden" name="subject" value="formmail">
					<table>
					<tr><td>Votre Nom:</td>
						<td><input type="text" name="realname" size="30"></td></tr>
					<tr><td>Votre Email:</td>
						<td><input type="text" name="email" size="30"></td></tr>
					<tr><td>Sujet:</td>
						<td><input type="text" name="title" size="30"></td></tr>
					<tr><td colspan=2>Commentaires:<br>
					  <textarea COLS="50" ROWS="6" name="comments"></textarea>
					</td></tr>
					</table>
					<br> <input type="submit" value="Envoyer"> -
						 <input type="reset" value="Annuler">
					</form>
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 19h03   #17
Invité de passage
 
Homme
Inscription : août 2010
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2010
Messages : 128
Points : 1
Points : 1
Oui merci j'ai testé les fichiers sur un serveur au boulot et ça marche!!
Merci à Tous pour l'aide.
Marc31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h29.


 
 
 
 
Partenaires

Hébergement Web