> Tous les forums > Forum des Webmasters
 Creer un formulaire
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
niagara
  Posté le 04/07/2009 @ 14:58 
Aller en bas de la page 
Petit astucien

Bonjour

Je viens de créer un formulaire mais je ne veux pas que la messagerie de l'internaute s'ouvre par défaut lorsqu'il clique sur le bouton envoyer de mon formulaire simplement qu'il reçoit un message du style "message envoyé". J'arrive à faire ce formulaire mais impossible de le faire fonctionner si quelqu'un pouvait me dire l'erreur que j'ai commise .Merci d'avance.

Voici le script de mon formulaire

td><FORM METHOD=POST ENCTYPE="text/plain" ACTION="formmail.php">
<PRE>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div align="center"></div>
<form action="" method="post" enctype="multipart/form-data" name="form1">
<div align="center">
<table width="663" border="0">
<tr>
<th width="203" scope="col"><div align="left"><span class="Style50">Nom</span></div></th>
<th width="287" scope="col"><div align="left">
<input type="text" name="textfield" id="textfield">
</div></th>
</tr>
<tr>
<td class="Style35"><span class="Style52">Prenom</span></td>
<td><input type="text" name="textfield2" id="textfield2"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">D&eacute;pt</span></td>
<td><input type="text" name="textfield3" id="textfield3"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">Email</span></td>
<td><input type="text" name="textfield4" id="textfield4"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">Nom du cheval</span></td>
<td><input type="text" name="textfield5" id="textfield5"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">Sa date de naissance</span></td>
<td><input type="text" name="textfield6" id="textfield6"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">Sa date de d&eacute;c&egrave;s</span></td>
<td><input type="text" name="textfield7" id="textfield7"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">Sa photo</span></td>
<td><input type="file" name="fileField" id="fileField"></td>
</tr>
<tr>
<td class="Style35"><span class="Style52">Votre texte</span></td>
<td><textarea name="textarea" id="textarea" cols="45" rows="5"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="button" id="button" value="Envoyer"></td>
</tr>
</table>
</div>
</form>

et voici le code de mon fichier php

<?php
$TO = "nasco26@orange.fr";

$h = "From: " . $TO;

$message = "formulairehommage";

while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location: http://www.ecuriesylbrige.fr/merci.html");

?>

encore merci pour votre aide.

Publicité
elle
 Posté le 04/07/2009 à 15:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grande Maîtresse astucienne

niagara
 Posté le 04/07/2009 à 15:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci elle j'avais regarder déjà mais j'avoue que je patauge un peu dans tous ces languages cela fait depuis hier que je me creuse les méninges et je n'y arrive pas va falloir que je fasse faire une révision dans ma cervelle d'après toi est ce que mes codes sont bons??

Merci

Malcolm
 Posté le 04/07/2009 à 20:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

HTTP_POST_VARS est déprécié, il faut utiliser $_POST à la place.

Sur le plan fonctionnel, ton code marchera. MAis sur le plan sécurité, c'est une vraie passoire.

Ton enctype="multipart/form-data" ne sert à rien : tu n'as pas d'autres éléments que tu texte ...

niagara
 Posté le 05/07/2009 à 08:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci Malcolm pour ta réponse j'avoue être néophyte sur ce problème et que les codes que j'ai mis je les ai trouvé sur des sites de programmation.

Lorsque tu me dis que sur le plan sécurité c'est une vraie passoire est ce que ça veut dire que je risque d'être contaminée par des virus??? Comment faire alors

que veux tu dire par Ton enctype="multipart/form-data" ne sert à rien : tu n'as pas d'autres éléments que tu texte ...



Dreamer
 Posté le 05/07/2009 à 09:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

niagara a écrit :

Merci Malcolm pour ta réponse j'avoue être néophyte sur ce problème et que les codes que j'ai mis je les ai trouvé sur des sites de programmation.

Lorsque tu me dis que sur le plan sécurité c'est une vraie passoire est ce que ça veut dire que je risque d'être contaminée par des virus??? Comment faire alors

que veux tu dire par Ton enctype="multipart/form-data" ne sert à rien : tu n'as pas d'autres éléments que tu texte ...



Salut

Comme te l'a dit Elle , le formulaire de Malcolm est facile à intégrer dans une page de ton site et si tu as un soucis , il n'est jamais loin !!

niagara
 Posté le 05/07/2009 à 09:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

alors voilà j'ai réussi à faire mon formulaire qui marche impeccable sauf l'envoi d'un fichier sur ma messagerie je reçois bien le mail avec les coordonnées demandées dans le formulaire mais je n'ai pas la photo demandée juste l'extension de la photo. Où est mon erreur? Merci

voici le nouveau code html

<form action='/cimetiere formulaire.php' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<tr>
<td colspan='2' align="center"><span class="txterror Style33"><b>Les champs marqué d'un <span class="Style40">*</span> sont obligatoires</b></span></td>
</tr>
<tr><td align='right' width='30%'><span class="txtform"><span class="Style34">Emai</span><font color="#E8D67A" size="1" face="Verdana">l</font><font color="red" size="1" face="Verdana">*</font><font color="#E8D67A" size="1" face="Verdana"> :</font></span></td>
<td><input type='text' style='width:200 ;' name='f_1' value='' size='24' border='0'></td></tr>

<tr><td align='right' width='30%'><span class="txtform"><span class="Style34">Nom de l'anima</span><font color="#E8D67A" size="1" face="Verdana">l</font><font color="red" size="1" face="Verdana">*</font><font color="#E8D67A" size="1" face="Verdana"> :</font></span></td>
<td><input type='text' style='width:200 ;' name='f_2' value='' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class="txtform"><span class="Style34">Année de naissance</span><font color="red" size="1" face="Verdana">*</font><font color="#E8D67A" size="1" face="Verdana"> :</font></span></td>
<td><input type='text' style='width:200 ;' name='f_3' value='' size='24' border='0'></td></tr>
<tr><td align='right' width='30%'><span class="txtform"><span class="Style34">Année du décès</span><font color="red" size="1" face="Verdana">*</font><font color="#E8D67A" size="1" face="Verdana"> :</font></span></td>
<td><input type='text' style='width:200 ;' name='f_4' value='' size='24' border='0'></td></tr>
<tr>
<td align='right' width='30%'><span class="Style34">Photo :</span></td>
<td><input type="file" name="fileField" id="fileField"></td>
</tr>

<tr><td align='right' width='30%'><span class="Style34">Message :</span></td>
<td><textarea style='width:260 ;' name='f_6' rows='4' cols='40'></textarea></td></tr>
<tr><td align='right' width='30%'></td><td><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>

et voici le nouveau code php

<?php
$TO = "nasco26@orange.fr";

$h = "From: " . $TO;

$message = "Votre message est bien envoyé";

while (list($key, $val) = each($_POST)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location: http://www.ecuriesylbrige.fr/merci.html");

?>

Malcolm
 Posté le 05/07/2009 à 10:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

je n'avais pas vu la pièce jointe ... Auquel cas oui il faut bien un enctype="multipart/form-data".

pour ce qui est de la passoire, non, c'est pas une question de virus, mais de spam. J'avais cru comprendre (mais relecture faite, je me suis trompé) que tu mettais un $TO "comme ça", sans protection, donc si moi je rentre dans ton formulaire : "malcoml@fournisseur.tld\r\nBcc:ami1@fai.tld;ami2@fai.tld.....ami1500@fai.tld" j'envoie un email en copie cachée (Bcc) à 1500 personnes ... Je te laisse imaginer la surprise et la réaction de ton hébergeur. Mais l'ai vu ça en pensant que dans $from tu mettrais l'expéditeur = la personne qui souhaite te contacter ...

Mais quand aurons-nous sur PCA un affichage de code source digne de ce nom ?

(tu n'es pas responsable mais l'administration ne répond toujours rien malgré nos nombreuses demandes).

Bon, pour ce qui est de la pièce jointe, c'est carrément plus complexe.

Tout d'abord, il faut télécharger le fichier avant de pouvoir le joindre au mail (le mail étant préparé côté serveur, il faut que le fichier soit côté serveur aussi) dnc ça implique de créer un sous dossier pour y stocker temporairement les fichiers.

ça implique de vérifier le contenu du fichier, que la personne ne t'envoie pas un fichier qui contient un code source malicieux (j'en ai fait les frais une fois !)

et enfin, ça implique de faire un email plus conséquent : il faut une limite (boundary en anglais) qui permet de délimiter le texte (corps du mail) du fichier, qui sera encodé dans le mail.

Attention à l'encodage : c'est plus volumineux. Un fichier de 1 Mo une fois encodé pèsera environ 1.4 Mo ... Donc si ta boite ne supporte pas de grosses pièces jointes ...

pour uploader un fichier :

<?php

$fichier = '';

$nomfichier = '';

$mime_type = '';

if ($_FILES['fileField']['name'] != '') // parce que le name de ton fchier est fileField

$dossier = 'fichiers_joints/'; // par exemple et à créer si besoin

$nomfichier = basename($_FILES['fileField']['name']);

$fichier = $dossier.$nomfichier;

$mime_type = mime_content_type($fichier);

opendir($dossier);

if (move_uploaded_file($_FILES['fileField']['tmp_name'], $fichier))

{

@chmod($fichier, 0766);

}

else

{

echo 'impossible de télécharger le fichier';

}

closedir($dossier);

};

// et pour le joindre au mail :

$boundary = uniqid(random()); // de façon à faire suffisamment aléatoire

$message .= $boundary;

$file = fopen($fichier, "r");
$contents = fread($file, $attach_size);
$encoded_attach = chunk_split(base64_encode($contents));
fclose($file);

$message .= "\n\n".$boundary."\n";
$message .= "Content-type: $mime_type; name=\"$nomfichier\"\n";
$message .= "Content-Transfer-Encoding: BASE64\n";
$mmessagesg .= "Content-disposition: attachment; filename=\"$nomfichier\"\n\n";
$message .= $encoded_attach."\n";
$message .= "\n\n".$boundary."\n";

// et après on met ton texte

$message .= "Content-type:text/plain\n";

while (list($key, $val) = each($_POST)) {
$message .= "$key : $val\n";

$message .= "\n\n".$boundary."\n";

// enfin on envoie le mail

mail($TO, $subject, $message, $h);

Bon, je t'avoue que je te réponds mais j'ai pas eu le temps de tester, je dois lke faire sur mon site et je ferai la semaine prochaine un tuto plus complet pour mon formulaire de contact.

Cherche sur intenret "formulaire php pièce jointe", je suis sûr que tu trouveras des réponses.

niagara
 Posté le 05/07/2009 à 10:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci Malcolm waoua ça se complique bon je vais essayer de suivre tes indications (pas facile mais bon je vais m'accrocher) Bonne journée je reviendrais te dire si ça amrche

Publicité
niagara
 Posté le 06/07/2009 à 09:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour je n'arrive toujours pas à envoyer une pièce jointe avec mon formulaire.

Au moment où je fais envoyer on me dit ceci

"Class Mail, method attach : file ../upload/3.jpg can't be found "

qu'est ce que j'ai fait encore comme erreur??

Malcolm
 Posté le 06/07/2009 à 22:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

est-ce que le fichier a bien été téléchargé sur ton disque dur ?

Sinon il y a carrément plus simple ... Il existe des classes mail en PHP toutes faites qui te permettent de t'éviter tout ce qui est boundary, etc.

niagara
 Posté le 07/07/2009 à 14:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci Malcolm pour tes conseils mais j'avoue être complètmeent paumée vu que je n'y connais rien et tous les codes que j'ai mis je les ai pris sur des sites qui proposent des scripts.

je me permets de t'envoyer un mail. Encore merci

Malcolm
 Posté le 07/07/2009 à 20:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Hello,

Je pense que le plus simple à faire est d'utiliser une classe PHP : ça sera pas très difficile à mettre en place et ça t'assure de faire facilement un mail.

Je te propose PHPMailer à télécharger gratuitement sur SourceForge.

Le principe est simple, tu as ton formulaire de contact déjà fait (pas besoin d'y toucher), tu as juste :

== sur le plan programmation ==

- à rajouter le téléchargement du fichier joint comme je te l'ai montré

- à faire un require('class.phpmailer.php'); (pour appeler le fichier de PHPMailer)

- à remplacer tout ce que je t'ai mis pour composer le mail par un bout de code PHP qui utilisera PHP Mailer (il y a des exemples dans l'archive, sinon tu as un tuto plutôt bien fait ici : http://stephaneey.developpez.com/tutoriel/php/phpmailer/

Regarde la partie 6.4. avec les fichiers joints.

== sur le plan organisation ==

(c'est redit dans le tuto de développez.com)

- mettre les 2 fichiers principaux de PHPMailer dans le même répertoire que ton formulaire (class.phpmailer.php et class.smtp.php)

- dans la partie 3 tu n'as donc pas besoin de mettre le nom du répertoire (puisque c'est le même) => ça donne un require('class.phpmailer.php');

== sur le plan des données ==

tu verras que tu pourras y insérer ton $message (au lieu de leur code HTML d'exemple), l'hôte SMTP étant je présume localhost pour toi.


== sur le plan pratique ==

faire des essais, et surtout relever toutes les erreurs. "ça marche pas" ne t'aidera pas à avancer ...

niagara
 Posté le 08/07/2009 à 07:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci Malcolm je vais donc suivre ton conseil et je vais installer PHPMailer je reviens te dire ce qu'il en est et croiser les doigts pour que cela marche.

Bonne journée

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
11,96 €Carte mémoire microSDXC UHS-I U3 SanDisk Extreme 64 Go (jusqu'à 160 Mo/s) à 11,96 €
Valable jusqu'au 16 Mai

Amazon fait une promotion sur la carte mémoire microSDXC UHS-I U3 SanDisk Extreme 64 Go qui passe à 11,96 €. Cette carte mémoire offre des vitesses jusqu'à 160 Mo/s et est idéale pour les téléphones, caméras et appareils photo 4K. Elle est compatible GoPro, Switch et est accompagnée d'un adaptateur SD.


> Voir l'offre
Gratuit3 mois d'abonnement à Amazon Music Unlimited gratuits
Valable jusqu'au 30 Mai

Amazon vous permet d'essayer son service de streaming musical pendant 3 mois gratuitement. Avec Amazon Music Unlimited, accédez à plus de 50 millions de titres, sans publicité et en illimité sur tous vos appareils : smartphone, tablette, PC/Mac, Fire, Alexa. Vous avez même la possibilité de télécharger vos playlists pour des écoutes hors connexion. A la fin de ces 3 mois, vous pourrez basculer vers l'offre payante à 9,99 € / mois ou bien arrêter sans frais le service. A noter l'existence d'une offre famille à 14,99 € / mois qui permet jusqu'à 6 utilisateurs d'écouter leur musique à tout moment et sur leurs appareils préférés. Vous pouvez annuler l'abonnement à tout moment.


> Voir l'offre
16,64 €Carte mémoire microSDXC UHS-I SanDisk A1 Ultra 128 Go à 16,64 €
Valable jusqu'au 16 Mai

Amazon fait une promotion sur la carte mémoire microSDXC UHS-I SanDisk A1 Ultra 128 Go à 16,64 €. Cette carte mémoire offre des vitesses jusqu'à 100 Mo/s et est idéale pour les téléphones, caméras et appareils photo HD.


> Voir l'offre

Sujets relatifs
comment créer et recevoir un petit formulaire tout
Créer un formulaire
Créer formulaire de notations en HTML pour Blog ?
Aide pour formulaire créer avec Dreamweaver 8
Créer un formulaire dans une page en flash
créer un formulaire sans passer par..
Recherche qqun pour créer formulaire contre EUROS
Coment créer un formulaire en ligne?
creer un formulaire de contact
Créer un formulaire
Plus de sujets relatifs à Creer un formulaire
 > Tous les forums > Forum Forum des Webmasters