Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 05/02/2007, 21h26   #1
Invité de passage
 
Inscription : février 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 8
Points : 1
Points : 1
Par défaut Formulaire avec pièce jointe ne fonctionne pas

Bonjour a tous! j'ai mis du temps a me décider a venir sur un forum pour cette histoire de formulaire, mais bon, vu que je débute dans le php, ben j'ai du mal a m'en sortir seul... donc me voilà!
J'ai passé 2aprèmes entieres a chercher du code qui créerait un formulaire qui m'enverrait le contenu d'une zone texte, et une pièce jointe.
Or, j'ai réussi a ce que l'envoi du mail se fasse, mais la pièce jointe bloque...
D'un coté, j'ai le formulaire et son php qui envoie correctement le mail (avec message) et de l'autre coté, j'ai un autre formulaire et son php qui envoie un tas d'info mais surtout une pièce jointe, et ca marche.

J'ai essayé d'integrer pas a pas la mise en forme de mon propre formulaire dans celui qui fonctionne avec la pièce jointe, mais rien a en tirer... J'ai fait des centaines de tests pour reperer d'ou venaient les erreurs, et je suis tombé sur des constatation désolantes... Exemple : quand je déclare un champ du formulaire en type="hidden", le mail ne s'envoie plus... Donc, vous restez mon seul espoir!
Je précise que j'ai créer mon formulaire perso avec Dreamweaver 8.

Je suis conscient qu'il y a surement du code inutile dans tout mon charabia mais j'ai préféré ne pas enlever des trucs qui pourraient être vital...

Voici le formulaire de mon mail qui marche answer.php :
(Désolé de mettre la déclaration de chaque calque, mais je préfère ne rien laisser au hasard...)

Code html :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Answer By Tiss</title>
<style type="text/css">
<!--
textarea {
color:white;
font-family:cruiser;
font-size:18px;
padding:1cm;
}
body,td,th {
	font-family: Impact;
	font-size: 24px;
	color: #FFFFFF;
	background-image: url(berserk.jpg);
}
body {
	background-color: #000000;
	background-image: url();
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
#Layer1 {
	position:absolute;
	width:200px;
	height:115px;
	z-index:1;
	left: 203px;
	top: 89px;
}
#Layer2 {
	position:absolute;
	width:477px;
	height:528px;
	z-index:2;
	left: 20px;
	top: 63px;
	visibility: visible;
}
#Layer3 {
	position:absolute;
	width:200px;
	height:115px;
	z-index:1;
	left: 17px;
	top: 84px;
	visibility: visible;
}
-->
</style>
<script type="text/javascript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
 
<body>
 
<div id="Layer2">
 
<form method="post" action="mail.php">
 
<p>
<input type="hidden" name="votremail" value="NomFixeDeLExpediteur@aol.com"/>
 
<!-- Valeur par défaut de l'objet du mail -->
<input type="hidden" name="objet" value="Le Tiss a répondu!" />
</p>
 
<p>
  <textarea cols="54" rows="16" style="background-image: url(berserk.jpg)" name="message"></textarea>
</p>
<p>
<input name="attach" type="file" size="16" maxlength="5000000"/>
</p>
 
<p>
	<input type="submit" value="Envoyer" />
</p>
 
	</form>
 
	</div>
</div>
<div id="Layer3">
<center>
  <table width="1024" height="768" border="3" bordercolor="#FFFFFF">
    <tr>
      <td width="954" height="70">&nbsp;</td>
    </tr>
  </table>
</center>
</div>
</body>
</html>

Et son morceau de PHP mail.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
34
35
36
<?php
// La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
 
// On assigne et protége nos variables
$votremail=$_POST["votremail"];
$from=htmlentities("From: ".$votremail);
$message=stripslashes(htmlentities($_POST["message"]));
 
// On met ici notre email
$destinataire="MonNom@aol.com";
 
/* On place le sujet du message qui ici sera toujours le même
puisque dans la partie Html on l'a mis en caché grace au type="hidden";) avec comme valeur "Vous avez un nouveau message"  */
$objet=$_POST['objet'];
 
// C'est bon on est OK, vérifions si l'email est valide, grâce à notre sympathique REGEX
if(!preg_match($verif,$votremail))
{
        echo "Votre email n'est pas valide";
}
 
// On verifie si il y a un message
elseif (trim($message)=="")
{
        echo "Y'en a marre des messages vides !";
}
 
// Si tout est OK on envoie l'email
else
{
        mail($destinataire,$objet,$message,$from);
        header("Location: http://nomdedomaine.ifrance.com");
}
 
?>
Et voici le formulaire glané sur le net contact.php :

Code html :
1
2
3
4
5
6
7
8
9
10
11
12
13
<form method=POST action="formmail.php" enctype="multipart/form-data">
Adresse : <br><input name="adresse" size=40 value=""><br>
CC : <br><input name="cc" size=40 value=""><br>
BCC : <br><input name="bcc" size=40 value=""><br>
Sujet : <br><input name="subject" size=40 value=""><br>
Message : <br>
<Textarea name="msg" cols=40 rows=10 WRAP=HARD>
</TextArea><br>
Fichiers : <br>
<input type=file size=40 name="attach"><br><br>
<center><input type=submit value="Envoyer"></center>
<input type=hidden name="message" value=1>
</form>

Ainsi que son morceau de PHP formmail.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
34
35
36
37
<?
  $headers = "From: Votre Nom <monnom@mondomaine.com>\n";
  $headers .= "X-Sender: <monnom@mondomaine.com>\n";
  $headers .= "X-Mailer: PHP\n";
  $headers .= "X-Priority: 3\n";
  $headers .= "Return-Path: <monnom@mondomaine.com>\n";
  $headers .= "cc:".$cc."\n";
  $headers .= "bcc:".$bcc."\n";
  if (is_uploaded_file($attach)) {
    $file = fopen($attach, "r");
    $contents = fread($file, $attach_size);
    $encoded_attach = chunk_split(base64_encode($contents));
    fclose($file);
 
    $headers .= "MIME-version: 1.0\n";
    $headers .= "Content-type: multipart/mixed; ";
    $headers .= "boundary=\"Message-Boundary\"\n";
    $headers .= "Content-transfer-encoding: 7BIT\n";
 
    $body_top = "--Message-Boundary\n";
    $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";
 
    $msg_cpl = $body_top.stripslashes($msg);
 
    $msg_cpl .= "\n\n--Message-Boundary\n";
    $msg_cpl .= "Content-type: $attach_type; name=\"$attach_name\"\n";
    $msg_cpl .= "Content-Transfer-Encoding: BASE64\n";
    $msg_cpl .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
    $msg_cpl .= "$encoded_attach\n";
    $msg_cpl .= "--Message-Boundary--\n";
  }
  if (mail ("$adresse","".stripslashes($subject)."","$msg_cpl",$headers)) {
    echo ("<center><font color=green>Mail envoyé</font></center>");
  }
?>
Et pour finir, voila ce que j'ai essayé d'en faire pour concilier les 2, histoire que ca vous donne une idée de ce que je veux réaliser a la fin, si je n'ai pas été très clair...

J'ai utilisé mon formulaire perso answer.php posté plus haut et voici le morceau de php correspondant :

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
// La variable $verif, va nous permettre d'analyser si la sémantique de l'email est bonne
$verif="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
 
// On assigne et protége nos variables
$votremail=$_POST["votremail"];
$from=htmlentities("From: ".$votremail);
$message=stripslashes(htmlentities($_POST["message"]));
 
// On met ici notre email
$destinataire="MonNom@aol.com";
 
/* On place le sujet du message qui ici sera toujours le même
puisque dans la partie Html on l'a mis en caché grace au type="hidden";) avec comme valeur "Vous avez un nouveau message"  */
$objet=$_POST['objet'];
 
if 	(!is_uploaded_file($attach))
{	
	mail($destinataire,$objet,$message,$from);
    header("Location: http://NomDeDomaine.ifrance.com");
}
 
elseif	(is_uploaded_file($attach)) {
    	$file = fopen($attach, "r");
    	$contents = fread($file, $attach_size);
    	$encoded_attach = chunk_split(base64_encode($contents));
    	fclose($file);
 
    $headers .= "MIME-version: 1.0\n";
    $headers .= "Content-type: multipart/mixed; ";
    $headers .= "boundary=\"Message-Boundary\"\n";
    $headers .= "Content-transfer-encoding: 7BIT\n";
 
    $body_top = "--Message-Boundary\n";
    $body_top .= "Content-type: text/plain; charset=US-ASCII\n";
    $body_top .= "Content-transfer-encoding: 7BIT\n";
    $body_top .= "Content-description: Mail message body\n\n";
 
    $msg_cpl = stripslashes($message);
 
    $msg_cpl .= "\n\n--Message-Boundary\n";
    $msg_cpl .= "Content-type: $attach_type; name=\"$attach_name\"\n";
    $msg_cpl .= "Content-Transfer-Encoding: BASE64\n";
    $msg_cpl .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n";
    $msg_cpl .= "$encoded_attach\n";
    $msg_cpl .= "--Message-Boundary--\n";
  }
  if (mail ($destinataire,$objet,$msg_cpl,$headers)) {
    echo ("<center><font color=green>Mail envoyé</font></center>");
  }
 
// C'est bon on est OK, vérifions si l'email est valide, grâce à notre sympathique REGEX
elseif(!preg_match($verif,$votremail))
{
        echo "Votre email n'est pas valide";
}
 
// On verifie si il y a un message
elseif	(trim($message)=="")
{
        echo "Y'en a marre des messages vides !";
}
 
?>
Merci par avance!
Icesik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 04h08   #2
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Salut et bienvenue dans les forums de Developpez.com !


Je veux bien t'aider, mais je ne travaille pas ainsi (avec DreamWeaver). Je vais au plus simple. Voici le code de ton formulaire que tu pourras ensuite embellir si tu veux. Je procède par étape pour que tu ne sois pas trop perdu. Tu remarqueras surtout les 2 parties de mon code :
- En haut, le code PHP du traitement du formulaire
- En bas, le code HTML du formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if(isset($_POST['votremail'])){
 
   // <-- CODE DU TRAITEMENT ICI -->   
 
}
?>
 
<form method="post" action="" enctype="multipart/form-data">
  <input type="text" name="votremail" value="NomFixeDeLExpediteur@aol.com"/><br/>
  <input type="text" name="subject" value="Le Tiss a répondu!"/><br/>
  <textarea cols="54" rows="16" name="message"></textarea><br/>
  <input name="attach" type="file"/>
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/> 
  <input type="submit" value="Envoyer"/><br/>
</form>
La propriété "action" est vide pour que le script s'appelle lui-même à la validation du formulaire...



Dans la partie traitement en PHP, tu va commencer par ajouter l'upload du fichier (pièce jointe). Le code le plus simple que je connais est celui-ci :
Code :
1
2
3
set_time_limit(0);
if(!is_uploaded_file($_FILES['attach']['tmp_name']))
  echo('Erreur : Fichier non téléchargé!');

Une fois que le fichier est téléchargé, tu envoi le mail avec PHPMAILER.
• Télécharge cette classe -> ICI
• Ajoute-la dans ton script avec Require_once('class.phpmailer.php'); en faisant attention d'installer ce fichier à la racine de ton programme...


Au final, cela te donne donc :
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
34
35
<?php
Require_once('class.phpmailer.php');
 
if(isset($_POST['votremail'])){
 
  set_time_limit(0);
  if(is_uploaded_file($_FILES['attach']['tmp_name'])){
    $mail = new PHPmailer();
    $mail->IsSMTP();
    $mail->IsHTML(true);
    $mail->Host='hote_smtp';
    $mail->From='votre@adresse';
    $mail->AddAddress($_POST['votremail']);
    $mail->AddReplyTo('votre@adresse');	
    $mail->Subject=$_POST['subject'];
    $mail->Body=htmlentities($_POST['message']);
    $mail->AddAttachment($_FILES['attach']['tmp_name']);
    if(!$mail->Send())
      echo $mail->ErrorInfo; else
      echo 'Mail envoyé avec succès';
    $mail->SmtpClose();
    unset($mail);
  }else echo ('Erreur : Pièce jointe non téléchargée!');
 
}
?>
 
<form method="post" action="" enctype="multipart/form-data">
  <input type="text" name="votremail" value="NomFixeDeLExpediteur@aol.com"/><br/>
  <input type="text" name="subject" value="Le Tiss a répondu!"/><br/>
  <textarea cols="54" rows="16" name="message"></textarea><br/>
  <input name="attach" type="file"/>
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/> 
  <input type="submit" value="Envoyer"/><br/>
</form>
J'ai fait ce code de tête, je ne l'ai pas testé, mais je suis confiant, ça devrait marcher.
Si tu veux ajouter des trucs et que tu bloques, demande moi, à+


[EDIT] J'ai retrouvé ce sujet où j'explique en détails le formulaire d'upload...
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2007, 20h50   #3
Invité de passage
 
Inscription : février 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 8
Points : 1
Points : 1
Par défaut Le probleme persiste...

Je tiens tout d'abord à te remercier de bien vouloir me venir en aide!!!

J'ai donc essayer le code que tu m'a proposé, en enlevant les 3 fonctions smtp car la fonction mail() fonctionne sur mon serveur.

J'ai fait quelques modifications pour renseigner les adresses, et il y a 2 issues, et 2 problemes. Soit je veux envoyer le formulaire sans uploader de fichier, et un message d'erreur me dit "Erreur : Pièce jointe non téléchargée!" Ce qui est plutot embetant, car l'envoi de pièce jointe devrait etre facultatif...

Le 2eme probleme est lors de l'envoi du formulaire avec pièce jointe, un message d'erreur me dit : "Could not instantiate mail function."
(Pour info, je me suis renseigné pour savoir ce que signifiait "instantiate", aucun traducteur en ligne n'a pu me le dire, et donc j'ai cherché ce terme dans le code du fichier class.phpmailer.php et je l'ai trouvé écrit une fois, mais ca ne m'avance pas vraiment... peut etre que toi si!?)

Je te montre mon code fignolé, pour que tu puisses décelé le probleme!

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
 
<?php
Require_once('class.phpmailer.php');
 
if(isset($_POST['votremail'])){ // 1) La, j'aimerais savoir s'il faut laisser l'adresse de l'expediteur ou du destinataire? 
 
  set_time_limit(0);
  if(is_uploaded_file($_FILES['attach']['tmp_name'])){
    $mail = new PHPmailer();
    $mail->IsHTML(true);
    $mail->From='votremail'; // 2) Ici, je renseigne bien l'adresse de l'expediteur!?
    $mail->AddAddress($_POST['destinataire@aol.com']); // 3) Ici, l'adresse du destinataire
    $mail->AddReplyTo('votremail');	// 4) Et ici, l'adresse de l'expediteur pour qu'il soit alerter si son mail a connu une erreur!?
    $mail->Subject=$_POST['subject'];
    $mail->Body=htmlentities($_POST['message']);
    $mail->AddAttachment($_FILES['attach']['tmp_name']);
    if(!$mail->Send())
      echo $mail->ErrorInfo; else
      echo 'Mail envoyé avec succès';
    unset($mail);
  }else echo ('Erreur : Pièce jointe non téléchargée!');
 
}
?>
 
<form method="post" action="" enctype="multipart/form-data">
  <input type="text" name="votremail" value="expediteur@aol.com"/><br/> <!-- Je crois que ce passage t'a induit en erreur car c'est assez spécial... En fait, l'expediteur du mail sera toujours la meme personne. Alors n'étant pas sur qu'il ne faille le préciser uniquement dans le php, je l'ai mis ici en type=hidden pour que l'expediteur soit toujours le meme. Je suppose donc que tu n'avais pas compris ma démarche, donc j'ai essayé de mettre mon adresse a peu pres partout pour etre sur de recevoir le formulaire sur ma boite mail, mais rien du tout... -->
  <input type="text" name="subject" value="Le Tiss a répondu!"/><br/>
  <textarea cols="54" rows="16" name="message"></textarea><br/>
  <input name="attach" type="file"/>
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/> 
  <input type="submit" value="Envoyer"/><br/>
</form>
Voila, j'ai bien copier class.phpmailer.php dans la racine de mon répertoire, la ou se trouve également la page de mon formulaire, mais rien ne fonctionne...
A un moment, un essai a marché, le mail m'a inscrit qu'il s'était bien envoyé, et d'ailleurs c'est l'expediteur fixe de mon mail qui l'a recu, mais il m'a dit que le mail était illisible, et il n'y avait pas de pièce jointe... que faire??
Merci par avance!
Icesik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2007, 10h33   #4
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Oui, à ce niveau ce n'est plus trop de l'aide, mais limite de la sous-traitance...
As-tu lu ces 2 tutoriels ?

http://antoine-herault.developpez.co...ls/php/upload/

http://stephaneey.developpez.com/tut...php/phpmailer/

Je n'aurais pas le temps avant ce soir d'essayer mon code pour trouver les bugs et les failles de sécurité.
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 11h36   #5
Invité de passage
 
Inscription : février 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 8
Points : 1
Points : 1
Citation:
Envoyé par Sub0
Oui, à ce niveau ce n'est plus trop de l'aide, mais limite de la sous-traitance...
As-tu lu ces 2 tutoriels ?

http://antoine-herault.developpez.co...ls/php/upload/

http://stephaneey.developpez.com/tut...php/phpmailer/

Je n'aurais pas le temps avant ce soir d'essayer mon code pour trouver les bugs et les failles de sécurité.
C'est remoi, et pas mécontent!!!
Ton code était bon en fait, mais il fallait trifouiller quelques trucs qui n'était pas préciser dans le tuto de phpmailer, mais j'y suis arrivé, grace a toi, et je te remercie beaucoup beaucoup!!! J'avais posté mon probleme sur 3 forums differents et celui ci a fait la différence!

Encore merci de ton aide, et voici le code pour ceux que ca interesserait!

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
34
35
36
37
38
39
40
41
42
43
44
45
46
 
<?php
Require_once('class.phpmailer.php');
 
if(isset($_POST['destinataire'])){
 
  set_time_limit(0);
  if(is_uploaded_file($_FILES['attach']['tmp_name'])){
    $mail = new PHPmailer();
    $mail->IsHTML();
    $mail->From='expediteur';
    $mail->AddAddress($_POST['destinataire']);
    $mail->AddReplyTo('expediteur');	
    $mail->Subject=$_POST['subject'];
    $mail->Body=htmlentities($_POST['message']);
    $mail->AddAttachment($_FILES['attach']['tmp_name']);
    if(!$mail->Send())
      echo $mail->ErrorInfo; else
      header("Location: http://*****.com");
    unset($mail);
  }elseif(!empty($destinataire)){
  	$mail = new PHPmailer();
    $mail->IsHTML();
    $mail->From='expediteur';
    $mail->AddAddress($_POST['destinataire']);
    $mail->AddReplyTo('expediteur');	
    $mail->Subject=$_POST['subject'];
    $mail->Body=htmlentities($_POST['message']);
    if(!$mail->Send())
      echo $mail->ErrorInfo; else
      echo 'Mail envoyé avec succès';
    unset($mail);
	}
 
}
?>
 
<form method="post" action="" enctype="multipart/form-data">
  <input  type="text" name="expediteur" value=""/><br/>
  <input  type="text" name="destinataire" value=""/><br/>
  <input type="text" name="subject" value=""/><br/>
  <textarea cols="54" rows="16" name="message"></textarea><br/>
  <input name="attach" type="file"/>
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/> 
  <input type="submit" value="Envoyer"/><br/>
</form>
Icesik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 14h39   #6
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Tu peux maintenant ajouter des tests pour vérifier les données postées avant l'envoi du mail...
- Vérifier la syntaxe de l'adresse mail
- Vérifier que le sujet du mail est bien défini
- Vérifier que le texte du mail est bien défini
- Vérifier le type du fichier ajouté
etc... Par exemple :
Code :
if (!isset($_POST['message'])) die('Vous devez saisir un message!');
Autrement, tu devrais laisser les arobas devant les $_POST comme dans mon code, sinon, tu auras une erreur PHP si le champs n'est pas renseigné. Avec l'arobas, l'utilisateur ne sera pas obligé de saisir un message. En résumé, c'est soit tu vérifies le champs avec isset, soit tu laisses l'arobas.

Ensuite, tu peux améliorer ce code en permettant l'ajoût de plusieurs pièces jointes si tu veux.

N'oublis pas le tag
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 14h55   #7
Expert Confirmé
 
Avatar de Sub0
 
Homme
Inscription : décembre 2002
Messages : 3 468
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 39

Informations forums :
Inscription : décembre 2002
Messages : 3 468
Points : 3 115
Points : 3 115
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Voici le code corrigé :
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
<?php
Require_once('class.phpmailer.php');
set_time_limit(0);
 
if(isset($_POST['destinataire'])){
 
  $mail = new PHPmailer();
  $mail->IsHTML();
  $mail->From='expediteur';
  $mail->AddAddress($_POST['destinataire']);
  $mail->AddReplyTo('expediteur');	
  // Sujet et texte du mail facultatifs
  $mail->Subject=@$_POST['subject'];
  $mail->Body=htmlentities(@$_POST['message']);
  // Pièce jointe facultative
  if(is_uploaded_file($_FILES['attach']['tmp_name']))
    $mail->AddAttachment($_FILES['attach']['tmp_name']);
  if(!$mail->Send())
    echo $mail->ErrorInfo; else
    echo 'Mail envoyé avec succès';
  unset($mail);  
}
?>
 
<form method="post" action="" enctype="multipart/form-data">
  <input  type="text" name="expediteur" value=""/><br/>
  <input  type="text" name="destinataire" value=""/><br/>
  <input type="text" name="subject" value=""/><br/>
  <textarea cols="54" rows="16" name="message"></textarea><br/>
  <input name="attach" type="file"/>
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/> 
  <input type="submit" value="Envoyer"/><br/>
</form>
Sub0 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 20h49.


 
 
 
 
Partenaires

Hébergement Web