|
|
|
|
Bonjour,
J'ai créé un formulaire qui ajoute des données dans une BD MySQL. Je reçois également un mail avec les résultats de mon formulaire.
Ce que je voudrais, c'est que la personne qui rempli mon formulaire et qui entre son adresse e-mail dans le champ prévu à cet effet, reçoive le même mail de confirmation que moi...
le champ e-mail n'est pas obligatoire dans mon formulaire.
Voici le code que j'utilise pour me faire parvenir le mail:
<?php
$TO = "mon_nom@mon_domaine.ch";
$h = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
$message .= "$key : $val\n";
}
mail($TO, $subject, $message, $h);
Header("Location: http://page de confirmation.html");
?>
Quelqu'un aurait une solution mettre sous la dent d'un débutant...?
Merci d'avance...
Configuration: Windows XP Internet Explorer 7.0
Salut.
<?php
//on définir et initialise quelques variables
$destinataire='mon_nom@mon_domaine.ch';
$header='From: '.$destinataire;
$message='';
//tous les champs du formulaire sont ajoutés dans le message
foreach($_POST as $cle=>$valeur)
$message.=$cle.' : '.$valeur."\n";
//on envoie le mail en séparant les adresse des deux destinataires par une virgule et un espace
mail($destinataire.', deuxiemeadresse',$subject,$message,$header);
//on dirige vers le résultat
header('Location: http://page de confirmation.html');
?>
Sylvain
"Join us now, and share the software. You'll be Free, hackers."
|
Bon bein j'ai essayé mais ça le fait pas...
|
Salut.
Les fonctions(dans l'ordre d'utilisation) Ces explication sont sommaires et pas forcément exactes. Consulte la documentation ;-) get_magic_quotes_gpc : pemet de voir si des anti-slashs sont ajoutés automatiquement sur certaines variables qui proviennent de l'utlisateur, comme les $_POST. array_map : Permet d'appliquer une fonction à tous les éléments d'un array à la fois. stripslashes : Enlève les anti-slashs qui servent d'échappement dans une variable. mysql_real_escape_string : Echappe les caractères selon les normes MySQL. htmlspecialchars : Remplace certains caractères html (comme < et >) par leus entités. extract : Extrait tout les éléments d'un array. Par exemple : $truc['champ']='str'; extract($truc); //maintenant $champ vaut 'str' Et quelques autres trucs que j'utilise mais qui ne sont pas des fonctions : foreach : Boucle qui permet de parcourir un array clé par clé et valeur par valeur, et d'appliquer les mêmes choses à chaque fois. Le code<?
//on rend innofensives les données (seulement le html ici)
if(get_magic_quotes_gpc())
$_POST=array_map('stripslashes',$_POST);
$_POST=array_map('trim',$_POST);
foreach($_POST as $champ=>$valeur)
$_POST[$champ]=htmlspecialchars($valeur,ENT_NOQUOTES);
$date=date('d/m/Y H:i:s');
//connection a MySQL et selection de la BDD
$ConnectionBDD=mysql_connect('localhost','NomUtilisateur','MotDePasse','')or die('Erreur de connexion '.mysql_error());
mysql_select_db('ma_db',$ConnectionBDD) or die('Erreur de selection'.mysql_error());
//insertion des données dans la BDD, APRES SECURISATION POUR SQL !!
$postSQL=$_POST;
foreach($postSQL as $champ=>$valeur)
$postSQL[$champ]=mysql_real_escape_string($valeur);
extract($postSQL);
$RQSQLinsertionDonnees="INSERT INTO ma_table VALUES('$nom','$prenom','$jour','$mois','$annee','$sexe','$rue','$npa','$lieu','$tel','$categorie','$email','$remarques','$sujet','$date')";
mysql_query($RQSQLinsertionDonnees) or die('Erreur SQL !'.$RQSQLinsertionDonnees.'<br>'.mysql_error());
mysql_close();
//on prépare les données pour envoyer le mail
$header='From: '.$destinataire."\r\n".'Content-type:text/plain;charset=iso-8859-1';
$message='';
//tous les champs du formulaire sont ajoutés dans le message
foreach($_POST as $cle=>$valeur)
$message.=$cle.' : '.$valeur."\n";
//on envoie le mail en séparant les adresse des deux destinataires par une virgule et un espace dans le premier argument de la fonction
mail('tonadresse@email.tld, '.$email,$subject,$message,$header);
//on dirige vers le résultat, mais on eput le faire au début, seulement on ne verra pas les erreurs s'il y en a.
header('Location: http://ma_page_de_confirmation.html');
?>
j'éspère que je t'ai aidé, et que tu ne vas pas copier/coller le code bêtement sans comprendre ;-) a plus Sylvain "Join us now, and share the software. You'll be Free, hackers." P.S.:J'avais rpécisé dans mon rpécédent message d'utiliser le bouton code, or tu ne l'as pas fair. Fais le la prochaine fois, hein ? ;-) |
Salut Sylvain,
|
Salut.
|
Salut,
|
Salut.
|
Effectivement !!
$nom= $postSQL['nom']; $prenom= $postSQL['prenom']; $jour= $postSQL['jour']; $mois= $postSQL['mois']; $annee= $postSQL['annee']; $sexe= $postSQL['sexe']; $rue= $postSQL['rue']; $npa= $postSQL['npa']; $lieu= $postSQL['lieu']; $tel= $postSQL['tel']; $categories=$postSQL['categories']; $email= $postSQL['email']; $sujet= $postSQL['sujet']; $date= $postSQL['date'];Sylvain "Join us now, and share the software. You'll be Free, hackers." |
Bonjour,
|
Bonjour,
|
Bonjour,
|
Salut,
header("location: contact-ok.html");
Elle a marché une fois, et j'ai une erreur maintenant : Warning: Cannot modify header information - headers already sent by (output started at /-chemin-vers-la-page-/mail.php:1) in /-chemin-vers-la-page-/mail.php on line 8 Quelqu'un a t'il un autre moyen pour afficher une page de confirmation, ou peut voir ce qui ne va pas ? D'autant plus que je reçoit bel et bien le mail ! Voilà le fichier PHP complet : <?php
$de= "adresse@mail";
$entete= "Reply-To: $Mail";
$entete = "From: $Nom <$Mail>";
$sujet= "Contact";
$contenu= "De : $Nom \nAdresse : $Mail \nMessage : $Message";
mail($de, $sujet, $contenu, $entete);
header("location: contact-ok.html");
?> |