Fonction PHP : Envoyer des mails
- Accueil
- Forum
- Programmation
- PHP
- Fonction PHP : Envoyer des mails
Profil introuvable Le 23 juin 2016 à 23:36 (Édité le 25 janvier 2019 à 17:51)
J'ai coder un formulaire en HTML de manière simple, j'ai déjà vu la vidéo de Boris (https://www.youtube.com/watch?v=c4C0LXmSHhE) mais il a des trucs que je ne saisi pas, ayant pas de connaissance en PHP (pas encore 😫) j'aimerais que lorsque l'utilisateur clique sur le bouton "Soumettre le formulaire" le fichier PHP gère :
-Si les champs ne sont pas complétés, il affiche un message d'erreur (en majuscule) "Merci de bien vouloir vérifier que tous les champs contiennent les bonnes informations. Merci."
-Si les champs sont compléter mais invalide, il affiche toujours le même message.
-Si les champs sont compléter et valide, il envoie le message.
Voici le formulaire de contact en HTML :
<form action="php\send_form.php" method="post" class="form-style-9">
<ul>
<li>
<input type="text" name="field1" class="field-style field-split align-left" placeholder="Nom (requis)"/>
</li>
<li>
<input type="email" name="field2" class="field-style field-split align-right" placeholder="Email (requis)"/>
</li>
<li>
<input type="text" name="field3" class="field-style field-full align-none" placeholder="Sujet"/>
</li>
<li>
<textarea name="field5" class="field-style" placeholder="Message"></textarea>
</li>
<li>
<input type="submit" value="Soumettre le formulaire" title="Soumettre le formulaire"/>
</li>
</ul>
</form>
Si vous pouvez le remarquez, j'appelle le fichier PHP dans le code HTML.
Si vous pouvez me programmer le fichier PHP et m'expliquer le code en détails, se serait cool pour un premier cours en PHP 😄
Merci d'avance 😉
Ranarxhag Le 24 juin 2016 à 13:40 (Édité le 1 janvier 1970 à 01:00)
Profil introuvable Le 24 juin 2016 à 14:14 (Édité le 1 janvier 1970 à 01:00)
Voilà le souci, je n'ai pas encore appris le PHP donc je connais rien sur le PHP, j'appelle un fichier PHP dans le code mais je ne l'ai pas programmer, je me suis arrêté la, ça fait bien longtemps, et quand j'ai découvert le forum de Boris, je me suis inscrit et vous le faire part sur ce topic. 😄 😰
Pouvez-vous m'aider ? 😰
Ranarxhag Le 24 juin 2016 à 14:58 (Édité le 1 janvier 1970 à 01:00)
Je pourrais te faire le code mais tu n'y comprendrais rien si tu n'as jamais utilisé un langage de programmation.
Le seul truc que je vais te donner c'est un conseil :
Prend ton mal en patience et apprend le PHP. Tu pourras faire cet envoi d'email très facilement et un tas d'autres choses 😉
Balatharas Le 24 juin 2016 à 19:53 (Édité le 24 juin 2016 à 20:20)
Bon je suis gentil j'ai du temps alors je vais te montrer les conditions en détail avec des explications. Mais d'abord je ne comprends pas trop ceci:
-Si les champs sont compléter mais invalide, il affiche toujours le même message.Tu veux dire une vérification d'email ?
EDIT: J'ai rien dit pour action="" :D
Profil introuvable Le 24 juin 2016 à 20:22 (Édité le 1 janvier 1970 à 01:00)
Merci pour tes conseils 'Ranarxhag', j'aurais quand même voulu que tu me montres le code puis tu me l'explique par la suite, comme ça je comprendrais 😉 J'apprendrais le PHP plus tard, c'est juste un fichier PHP pour envoyer un mail, rien de plus.
Salut 'Beignet', content de te revoir 😉
-Si les champs sont compléter mais invalide, il affiche toujours le même message.C'est-à-dire celui ci : "Merci de bien vouloir vérifier que tous les champs contiennent les bonnes informations. Merci." (Tu n'a jamais remarquer quand tu cliques sur "Soumettre le formulaire" d'un formulaire avec de fausses informations un message de ce type apparaît en rouge ?)
"action="php\send_form.php"" est correct, qu'est-ce que tu me racontes la ?
Bon je suis gentil j'ai du temps alors je vais te montrer les conditions en détail avec des explications.Peut-tu me montrer comment faire ?
Balatharas Le 24 juin 2016 à 20:31 (Édité le 1 janvier 1970 à 01:00)
Profil introuvable Le 24 juin 2016 à 20:48 (Édité le 1 janvier 1970 à 01:00)
Oui c'est ça, par exemple rend-toi ici : http://christians-steffen.fr/contact/
Sans remplir le formulaire, clique sur "Soumettre le formulaire", tu comprendras 😉
Balatharas Le 24 juin 2016 à 21:11 (Édité le 24 juin 2016 à 21:18)
D'abord voilà le code:
PHP
<?php
if(isset($_POST['form-style-9']))
{
if(filter_var($_POST['field2'], FILTER_VALIDATE_EMAIL) AND !empty($_POST['field1']) AND !empty($_POST['field2']) AND !empty($_POST['field3']) AND !empty($_POST['field5']))
{
$destinataire = "ton email@domaine.fr";
$header="MIME-Version: 1.0\r\n";
$header.='From:"ton pseudo"<ton email@domaine.fr>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message=$field5;
mail($destinataire, "ton objet ici", $message, $header);
$error = "Succès !";
}
else
{
$error = "Merci de bien vouloir vérifier que tous les champs contiennent de bonnes informations. Merci.";
}
}
?>
Formulaire avec un peu de php
<form action="" method="POST" class="form-style-9">
<ul>
<li>
<input type="text" name="field1" id="field1" class="field-style field-split align-left" placeholder="Nom (requis)"/>
</li><br />
<li>
<input type="mail" name="field2" id="field2" class="field-style field-split align-right" placeholder="Email (requis)"/>
</li><br />
<li>
<input type="text" name="field3" id="field3" class="field-style field-full align-none" placeholder="Sujet"/>
</li><br />
<li>
<textarea name="field5" id="field5" class="field-style" placeholder="Message"></textarea>
</li><br />
<li>
<input type="submit" value="Soumettre le formulaire" name="form-style-9" title="Soumettre le formulaire"/>
</li>
</ul>
</form>
<?php
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
?>
D'abord, la condition if(isset($_POST[''])) veut dire "Si on clique sur le bouton, alors...." et entre les accolades { } on a "....on vérifie que le format de l'email rentré dans field2, qui est le champ du mail, est valide et que les champs sont tous bien remplis."
Ensuite dans cette condition la, on va traiter l'envoi du mail. Tous les $header sont les paramètres du mail. Le premier tu n'as pas vraiment besoin de t'en occuper. Le second: From="TonPseudo" c'est le pseudo qui va apparaître comme "nom de contact" et entre les chevrons, l'email du contact. Le reste tu n'a pas besoin de t'y attarder non plus.
Ensuite $message = $field5 c'est l'affichage dans le mail du message écrit par l'utilisateur.
mail() normalement je n'ai pas besoin de t'expliquer.
Maintenant }else{ $error = .....; c'est, si il y a un quelconque problème, que l'adresse email est invalide ou que un ou plusieurs champs ne sont pas remplis alors on affiche une erreur sous le formulaire avec
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
Donc a la fin on obtiens
Si on clique sur le bouton, alors, on vérifie que le format de l'email rentré dans field2, qui est le champ du mail, est valide et que les champs sont tous bien remplis. Ensuite on envoi le mail. Après on affiche les erreurs "Succès !" s'il n'y a pas de problème ou "Merci de bien vouloir vérifier que tous les champs contiennent de bonnes informations. Merci." s'il y en a un.
Voilà 😄 ah et je te déconseille d'utiliser un fichier distant pour le traitement du mail.
Profil introuvable Le 24 juin 2016 à 21:25 (Édité le 24 juin 2016 à 21:47)
Merci 'Beignet' pour toutes ces explications, donc je récapitule :
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
Je l'insère à la suite du code du formulaire de contact en HTML, puis je rempli le fichier le fichier PHP avec ce code :
<?php
if(isset($_POST['form-style-9']))
{
if(filter_var($_POST['field2'], FILTER_VALIDATE_EMAIL) AND !empty($_POST['field1']) AND !empty($_POST['field2']) AND !empty($_POST['field3']) AND !empty($_POST['field5']))
{
$destinataire = "ton email@domaine.fr";
$header="MIME-Version: 1.0\r\n";
$header.='From:"ton pseudo"<ton email@domaine.fr>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message=$field5;
mail($destinataire, "ton objet ici", $message, $header);
$error = "Succès !";
}
else
{
$error = "Merci de bien vouloir vérifier que tous les champs contiennent de bonnes informations. Merci.";
}
}
?>
N'ai-je pas oublier quelque chose ?
Qu'entends-tu par :
Voilà ah et je te déconseille d'utiliser un fichier distant pour le traitement du mail.Que veux-tu dire par la ?
Balatharas Le 24 juin 2016 à 21:34 (Édité le 1 janvier 1970 à 01:00)
Qu'entends-tu par :Je voulais dire que je te déconseillais de mettre action="php\send_form.php" c'est a dire d'utiliser un fichier distant pour mettre le php, tout simplement parce que si tu as quelques chose a modifier ce sera plus simple.
Voilà ah et je te déconseille d'utiliser un fichier distant pour le traitement du mail.Que veux-tu dire par la ?
Profil introuvable Le 24 juin 2016 à 21:45 (Édité le 1 janvier 1970 à 01:00)
Je pense que mélanger les codes ne sont pas une bonne solution, car au début (quand j'étais petit) j'ai programmer le début de mon site et j'ai mis ensemble l'HTML et le CSS dans le même fichier. C'est pratique pour modifier rapidement mais quand on regarde le code (Ctrl+U) sur le navigateur, on se rend compte que c'est comme le code source de la page Google donc en désordre ! 😮
C'est pour cela que maintenant j'appelle les fichiers CSS, PHP, JavaScript, JQuery...etc.
D'ailleurs, le site du zéro l'explique 😉
Merci de m'avoir aidé 'Beignet', je met le sujet en résolu après avoir fait quelque test 😉
Balatharas Le 24 juin 2016 à 22:43 (Édité le 1 janvier 1970 à 01:00)
Content d'avoir pu t'aider 😄 ;)
Profil introuvable Le 25 juin 2016 à 19:06 (Édité le 1 janvier 1970 à 01:00)
Tu avais oublier de fermer avec "?>", ce qui donne :
<?php
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
?>
De plus, cela ne fonctionne pas quand je clique sur "Soumettre le formulaire", aucun message d'erreur n'apparait, le navigateur m'affiche le code du fichier PHP
De plus, sur ma page HTML apparait ceci : "'.$error.'';}?>" en dessous du bouton "Soumettre le formulaire"
As-tu fait une erreur quelque part ?
Balatharas Le 25 juin 2016 à 19:24 (Édité le 1 janvier 1970 à 01:00)
Essaie comme je t'ai dit, de mettre le php dans le même fichier. Car sinon je ne vois vraiment pas, j'ai pris des bout de mes codes et
<?php
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
?>
ce code la est copié-collé du mien donc il n'y a pas de raisons. A part si le fichier qui le contient est au format HTML. Si oui il faut le mettre au format PHP. Profil introuvable Le 25 juin 2016 à 19:33 (Édité le 1 janvier 1970 à 01:00)
Mon site web est fait que de page HTML, j'ai introduit le code, voila ce que ça donne :
<!DOCTYPE html">
<html lang="fr">
<meta charset="utf-8" />
<link rel="stylesheet" href="css\contact.css" type="text/css" media="all"/>
<p><font size="4"><font face="Calibri">Pour me contacter, veuillez remplir le formulaire ci-dessous. Soyez patient pour l’obtention d’une réponse !</font></font></p>
<form action="php\send_form.php" method="post" class="form-style-9">
<ul>
<li>
<input type="text" name="field1" class="field-style field-split align-left" placeholder="Nom (requis)"/>
</li>
<li>
<input type="email" name="field2" class="field-style field-split align-right" placeholder="Email (requis)"/>
</li>
<li>
<input type="text" name="field3" class="field-style field-full align-none" placeholder="Sujet"/>
</li>
<li>
<textarea name="field5" class="field-style" placeholder="Message"></textarea>
</li>
<li>
<input type="submit" value="Soumettre le formulaire" title="Soumettre le formulaire"/>
</li>
</ul>
</form>
<?php
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
?>
</html>
Ensuite, j'ai copier/coller le code PHP pour le mettre dans le fichier PHP (send_form.php) :
<?php
if(isset($_POST['form-style-9']))
{
if(filter_var($_POST['field2'], FILTER_VALIDATE_EMAIL) AND !empty($_POST['field1']) AND !empty($_POST['field2']) AND !empty($_POST['field3']) AND !empty($_POST['field5']))
{
$destinataire = "mon email@domaine.fr";
$header="MIME-Version: 1.0\r\n";
$header.='From:"mon pseudo"<mon email@domaine.fr>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message=$field5;
mail($destinataire, "mon objet ici", $message, $header);
$error = "Succès !";
}
else
{
$error = "Merci de bien vouloir vérifier que tous les champs contiennent de bonnes informations. Merci.";
}
}
?>
Ou se trouve l'erreur ? 😤 Balatharas Le 26 juin 2016 à 14:14 (Édité le 26 juin 2016 à 14:19)
Si le fichier qui contient
<?php
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
?>
est dans un fichier HTML (ex: index.html) alors il faut renommer ce fichier index.php c'est la seule solution.
Si il y a encore une erreur lors de la soumission du formulaire:
Essaie comme je t'ai dit, de mettre le php dans le même fichier.
Profil introuvable Le 26 juin 2016 à 18:28 (Édité le 1 janvier 1970 à 01:00)
Si le fichier qui contient est dans un fichier HTML (ex: index.html) alors il faut renommer ce fichier index.php c'est la seule solution.Tu veux dire que mon fichier "contact.html" deviendra "contact.php" le fait qu'il y est du code PHP dans le code HTML ?
Essaie comme je t'ai dit, de mettre le php dans le même fichier.Je vais essayer 😉
Profil introuvable Le 26 juin 2016 à 18:41 (Édité le 1 janvier 1970 à 01:00)
Je viens d'essayer, toujours le même problème que ce soit de modifier l'extension du fichier, que ce soit d'insérer le code PHP dans l'HTML, toujours le même problème 😕
As-tu une autre solution ? 😦
Balatharas Le 26 juin 2016 à 18:49 (Édité le 1 janvier 1970 à 01:00)
Profil introuvable Le 26 juin 2016 à 18:50 (Édité le 1 janvier 1970 à 01:00)
Fais quelque test avec mon code HTML et ton code PHP et tiens-moi au courant des nouveautés 😉
Balatharas Le 26 juin 2016 à 19:01 (Édité le 1 janvier 1970 à 01:00)
Alors tu mets bien ce code dans un fichier contact.php
<?php
if(isset($_POST['form-style-9']))
{
if(filter_var($_POST['field2'], FILTER_VALIDATE_EMAIL) AND !empty($_POST['field1']) AND !empty($_POST['field2']) AND !empty($_POST['field3']) AND !empty($_POST['field5']))
{
$destinataire = "mon email@domaine.fr";
$header="MIME-Version: 1.0\r\n";
$header.='From:"mon pseudo"<mon email@domaine.fr>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message=$field5;
mail($destinataire, "mon objet ici", $message, $header);
$error = "Succès !";
}
else
{
$error = "Merci de bien vouloir vérifier que tous les champs contiennent de bonnes informations. Merci.";
}
}
?>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="css\contact.css" type="text/css" media="all"/>
<title>Contact</title>
</head>
<body>
<p>
<font size="4"><font face="Calibri">Pour me contacter, veuillez remplir le formulaire ci-dessous. Soyez patient pour l’obtention d’une réponse !</font></font>
</p>
<form action="" method="post" class="form-style-9">
<ul>
<li>
<input type="text" name="field1" class="field-style field-split align-left" placeholder="Nom (requis)"/>
</li>
<li>
<input type="email" name="field2" class="field-style field-split align-right" placeholder="Email (requis)"/>
</li>
<li>
<input type="text" name="field3" class="field-style field-full align-none" placeholder="Sujet"/>
</li>
<li>
<textarea name="field5" class="field-style" placeholder="Message"></textarea>
</li>
<li>
<input type="submit" value="Soumettre le formulaire" title="Soumettre le formulaire"/>
</li>
</ul>
</form>
<?php
if(isset($error))
{
echo '<font color="#C22B2B">'.$error.'</font>';
}
?>
</body>
</html>
J'ai un peu refait ton code, je l'ai réorganisé et j'ai ajouté quelques balises comme body et head. Profil introuvable Le 26 juin 2016 à 19:06 (Édité le 1 janvier 1970 à 01:00)
Tu as fait un test vérifiant si il n'y a pas d'erreur ? Je vais essayer de mon côté 😉 Merci 😉