[RESOLU] Je n’arrive pas à comprendre comment fonctionne un formulaire de contact

Avatar du membre
Mammouth du PHP | 1564 Messages

16 déc. 2023, 19:28

Une erreur PHP s'affiche ? Une page blanche ? Des logs d'erreurs existent quelque part ? Que ce passe t-il lorsque tu appuis sur "Envoyer" ?

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 11:40

bonjour, j'ai pris le script exemple que vous m'avez indiqué, je place mon adresse email à l'endroit indiqué, ensuite je place la partie php avant <html> et la parte html avant </body>. je nomme cette page (monsite.fr/contact.php). la page avec le petit formulaire s'affiche je rempli les case et j'envois , résultat: ce que j'écris s'efface, mais je ne reçois rien.
si le l'appelle (monsite.fr/contact.html) la page disparait et "NO FOUND" apparait.
je me demande si je n'est pas oublié de modifier quelque chose sur le script!
merci de votre patience

Avatar du membre
Mammouth du PHP | 1564 Messages

17 déc. 2023, 12:59

Salut, colle toute la page ici, utilise les balises du forum pour mettre en valeur le code stp.

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 13:35

la partie php


// Page : contact.php
//mettez ici votre adresse mail
//de préférence une adresse avec le même domaine de là où, vous utilisez ce code, cela permet un envoie quasi certain jusqu'au destinataire
$votre_adresse_mail = '[email protected]';
// si le bouton "Envoyer" est cliqué
if(isset($_POST['envoyer'])){

//on vérifie que le champ mail est correctement rempli
if(empty($_POST['mail'])) {
echo "<p>Le champ mail est vide.</p>";

//on vérifie que l'adresse est correcte
}elseif(!preg_match("#^[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?@[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?\.[a-z]{2,}$#i", $_POST['mail'])){

echo "<p>L'adresse mail entrée est incorrecte.</p>";

//on vérifie que le champ sujet est correctement rempli
}elseif(empty($_POST['sujet'])){

echo "<p>Le champ sujet est vide.</p>";

//on vérifie que le champ message n'est pas vide
}elseif(empty($_POST['message'])){

echo "<p>Le champ message est vide.</p>";

//tout est correctement renseigné, on envoi le mail
}else{


//mail de l'utilisateur
$mail_de_lutilisateur = $_POST['mail'];

//on renseigne les entêtes de la fonction mail de PHP
// Attention à ne pas mettre de caractère spéciaux à "nom de votre site" qui pourraient poser problème
$entetes_du_mail = [];
$entetes_du_mail[] = 'MIME-Version: 1.0';
$entetes_du_mail[] = 'Content-type: text/html; charset=UTF-8';
$entetes_du_mail[] = 'From: Nom de votre site <' . $mail_de_lutilisateur . '>';
$entetes_du_mail[] = 'Reply-To: Nom de votre site <' . $mail_de_lutilisateur . '>';

//ajoute des sauts de ligne entre chaque headers
$entetes_du_mail = implode("\r\n", $entetes_du_mail);

//base64_encode() est fait pour permettre aux informations binaires d'être manipulées par les systèmes qui ne gèrent pas correctement les 8 bits (=?UTF-8?B? est une norme afin de transmettre correctement les caractères de la chaine)
$sujet = '=?UTF-8?B?' . base64_encode($_POST['sujet']) . '?=';

//htmlentities() converti tous les accents en entités HTML, ENT_QUOTES Convertit en + les guillemets doubles et les guillemets simples, en entités HTML
$message = htmlentities($_POST['message'], ENT_QUOTES, 'UTF-8');

//ajoute des sauts de ligne HTML si l'utilisateur en a utilisé
$message = nl2br($message);

//en fin, on envoi le mail


if(mail($votre_adresse_mail, $sujet, $message, $entetes_du_mail)){

echo "<p>Le mail à été envoyé avec succès !</p>";

}else{

echo "<p>Une erreur est survenue, le mail n'a pas été envoyé.</p>";

}
}
}
Modifié en dernier par dede1313 le 17 déc. 2023, 13:36, modifié 1 fois.

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 13:35

la partie html



<form action="contact.php" method="post">
Mail : <input type="text" name="mail">
<br>
Sujet : <input type="text" name="sujet">
<br>
Message : <textarea name="message" cols="40" rows="20"></textarea>
<br>
<input type="submit" name="envoyer" value="Envoyer">
</form>

Avatar du membre
Mammouth du PHP | 1564 Messages

17 déc. 2023, 13:51

Je connais ce code, c2script.com est mon site, je te demande le code complet de ta page, que tu prendra soin de mettre en évidence en utilisant les balises du forum s'il te plaît (balise HTML ou PHP, comme tu veux mais pas posé à même le post sinon on à du mal à le voir et le comprendre).

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 14:22

oui je sait que c'est votre script, c'est ce que je dis depuis le début, c'est pour faire un essai avant de compléter la page mais déjà avec ce petit script cela ne fonctionne pas.
pour la mise en page je vais essayer.
// Page : contact.php
//mettez ici votre adresse mail
//de préférence une adresse avec le même domaine de là où, vous utilisez ce code, cela permet un envoie quasi certain jusqu'au destinataire
$votre_adresse_mail = '[email protected]';
// si le bouton "Envoyer" est cliqué
if(isset($_POST['envoyer'])){
//on vérifie que le champ mail est correctement rempli
if(empty($_POST['mail'])) {
echo "<p>Le champ mail est vide.</p>";
//on vérifie que l'adresse est correcte
}elseif(!preg_match("#^[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?@[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?\.[a-z]{2,}$#i", $_POST['mail'])){
echo "<p>L'adresse mail entrée est incorrecte.</p>";
//on vérifie que le champ sujet est correctement rempli
}elseif(empty($_POST['sujet'])){
echo "<p>Le champ sujet est vide.</p>";
//on vérifie que le champ message n'est pas vide
}elseif(empty($_POST['message'])){
echo "<p>Le champ message est vide.</p>";
//tout est correctement renseigné, on envoi le mail
}else{
//mail de l'utilisateur
$mail_de_lutilisateur = $_POST['mail']; 
//on renseigne les entêtes de la fonction mail de PHP
// Attention à ne pas mettre de caractère spéciaux à "nom de votre site" qui pourraient poser problème
$entetes_du_mail = [];
$entetes_du_mail[] = 'MIME-Version: 1.0';
$entetes_du_mail[] = 'Content-type: text/html; charset=UTF-8';
$entetes_du_mail[] = 'From: Nom de votre site <' . $mail_de_lutilisateur . '>';
$entetes_du_mail[] = 'Reply-To: Nom de votre site <' . $mail_de_lutilisateur . '>';
//ajoute des sauts de ligne entre chaque headers
$entetes_du_mail = implode("\r\n", $entetes_du_mail);
//base64_encode() est fait pour permettre aux informations binaires d'être manipulées par les systèmes qui ne gèrent pas correctement les 8 bits (=?UTF-8?B? est une norme afin de transmettre correctement les caractères de la chaine)
$sujet = '=?UTF-8?B?' . base64_encode($_POST['sujet']) . '?=';
//htmlentities() converti tous les accents en entités HTML, ENT_QUOTES Convertit en + les guillemets doubles et les guillemets simples, en entités HTML
$message = htmlentities($_POST['message'], ENT_QUOTES, 'UTF-8');
//ajoute des sauts de ligne HTML si l'utilisateur en a utilisé
$message = nl2br($message);
//en fin, on envoi le mail
if(mail($votre_adresse_mail, $sujet, $message, $entetes_du_mail)){
echo "<p>Le mail à été envoyé avec succès !</p>";
}else{
echo "<p>Une erreur est survenue, le mail n'a pas été envoyé.</p>";
}
}
}

<form action="contact.php" method="post">
Mail : <input type="text" name="mail">
<br>
Sujet : <input type="text" name="sujet">
<br>
Message : <textarea name="message" cols="40" rows="20"></textarea>
<br>
<input type="submit" name="envoyer" value="Envoyer">
</form>

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 14:37

sur votre script je change juste "[email protected]" par mon email,je modifie: <form action="contacte.php" method="post"> et j'appelle la page contacte. j'ai ajouté un "e" pour pas gêné dans mon site.

Avatar du membre
Mammouth du PHP | 1564 Messages

17 déc. 2023, 14:50

Vous dites : "ensuite je place la partie php avant <html> et la parte html avant </body>", mettez toute votre page, s'il vous plaît. Je connais le code PHP, ça ne sert à rien de me le partager à nouveau...

Un contenu se met entre les balises <body>ici</body>, pas ailleurs.

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 16:07

j'ai tout mis entre<body> et</body> le résultat sur la page web c'est qu'on voit tout ce qui n'est pas censé être vu(je voulais envoyer une copie d'écran, mais je ne vois pas où faut la mètre)
mais cela ne fonctionne pas quand même.

Avatar du membre
Mammouth du PHP | 1564 Messages

17 déc. 2023, 16:17

Collez TOUT le code de la page ici.

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 16:24

// Page : contact.php
//mettez ici votre adresse mail
//de préférence une adresse avec le même domaine de là où, vous utilisez ce code, cela permet un envoie quasi certain jusqu'au destinataire
$votre_adresse_mail = '[email protected]';
// si le bouton "Envoyer" est cliqué
if(isset($_POST['envoyer'])){
//on vérifie que le champ mail est correctement rempli
if(empty($_POST['mail'])) {
echo "<p>Le champ mail est vide.</p>";
//on vérifie que l'adresse est correcte
}elseif(!preg_match("#^[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?@[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?\.[a-z]{2,}$#i", $_POST['mail'])){
echo "<p>L'adresse mail entrée est incorrecte.</p>";
//on vérifie que le champ sujet est correctement rempli
}elseif(empty($_POST['sujet'])){
echo "<p>Le champ sujet est vide.</p>";
//on vérifie que le champ message n'est pas vide
}elseif(empty($_POST['message'])){
echo "<p>Le champ message est vide.</p>";
//tout est correctement renseigné, on envoi le mail
}else{
//mail de l'utilisateur
$mail_de_lutilisateur = $_POST['mail']; 
//on renseigne les entêtes de la fonction mail de PHP
// Attention à ne pas mettre de caractère spéciaux à "nom de votre site" qui pourraient poser problème
$entetes_du_mail = [];
$entetes_du_mail[] = 'MIME-Version: 1.0';
$entetes_du_mail[] = 'Content-type: text/html; charset=UTF-8';
$entetes_du_mail[] = 'From: Nom de votre site <' . $mail_de_lutilisateur . '>';
$entetes_du_mail[] = 'Reply-To: Nom de votre site <' . $mail_de_lutilisateur . '>';
//ajoute des sauts de ligne entre chaque headers
$entetes_du_mail = implode("\r\n", $entetes_du_mail);
//base64_encode() est fait pour permettre aux informations binaires d'être manipulées par les systèmes qui ne gèrent pas correctement les 8 bits (=?UTF-8?B? est une norme afin de transmettre correctement les caractères de la chaine)
$sujet = '=?UTF-8?B?' . base64_encode($_POST['sujet']) . '?=';
//htmlentities() converti tous les accents en entités HTML, ENT_QUOTES Convertit en + les guillemets doubles et les guillemets simples, en entités HTML
$message = htmlentities($_POST['message'], ENT_QUOTES, 'UTF-8');
//ajoute des sauts de ligne HTML si l'utilisateur en a utilisé
$message = nl2br($message);
//en fin, on envoi le mail
if(mail($votre_adresse_mail, $sujet, $message, $entetes_du_mail)){
echo "<p>Le mail à été envoyé avec succès !</p>";
}else{
echo "<p>Une erreur est survenue, le mail n'a pas été envoyé.</p>";
}
}
}
<form action="contact.php" method="post">
Mail : <input type="text" name="mail">
<br>
Sujet : <input type="text" name="sujet">
<br>
Message : <textarea name="message" cols="40" rows="20"></textarea>
<br>
<input type="submit" name="envoyer" value="Envoyer">
</form>


Avatar du membre
Mammouth du PHP | 1564 Messages

17 déc. 2023, 16:32

Je vais arrêter là, je me répète, tant pis.

Si ya que ça dans la page, ça fonctionnera pas, il faut entourer le code PHP avec <?php ici du code php ?>.

Eléphanteau du PHP | 19 Messages

17 déc. 2023, 16:42

bien en fait comme vous m'avez dit de tout mettre sur la même page j'ai cru bon de mettre entre html, je réessaie désolé
// Page : contacte.php
//mettez ici votre adresse mail
//de préférence une adresse avec le même domaine de là où, vous utilisez ce code, cela permet un envoie quasi certain jusqu'au destinataire
$votre_adresse_mail = 'mail';
// si le bouton "Envoyer" est cliqué
if(isset($_POST['envoyer'])){
//on vérifie que le champ mail est correctement rempli
if(empty($_POST['mail'])) {
echo "<p>Le champ mail est vide.</p>";
//on vérifie que l'adresse est correcte
}elseif(!preg_match("#^[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?@[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?\.[a-z]{2,}$#i", $_POST['mail'])){
echo "<p>L'adresse mail entrée est incorrecte.</p>";
//on vérifie que le champ sujet est correctement rempli
}elseif(empty($_POST['sujet'])){
echo "<p>Le champ sujet est vide.</p>";
//on vérifie que le champ message n'est pas vide
}elseif(empty($_POST['message'])){
echo "<p>Le champ message est vide.</p>";
//tout est correctement renseigné, on envoi le mail
}else{
//mail de l'utilisateur
$mail_de_lutilisateur = $_POST['mail']; 
//on renseigne les entêtes de la fonction mail de PHP
// Attention à ne pas mettre de caractère spéciaux à "nom de votre site" qui pourraient poser problème
$entetes_du_mail = [];
$entetes_du_mail[] = 'MIME-Version: 1.0';
$entetes_du_mail[] = 'Content-type: text/html; charset=UTF-8';
$entetes_du_mail[] = 'From: Nom de votre site <' . $mail_de_lutilisateur . '>';
$entetes_du_mail[] = 'Reply-To: Nom de votre site <' . $mail_de_lutilisateur . '>';
//ajoute des sauts de ligne entre chaque headers
$entetes_du_mail = implode("\r\n", $entetes_du_mail);
//base64_encode() est fait pour permettre aux informations binaires d'être manipulées par les systèmes qui ne gèrent pas correctement les 8 bits (=?UTF-8?B? est une norme afin de transmettre correctement les caractères de la chaine)
$sujet = '=?UTF-8?B?' . base64_encode($_POST['sujet']) . '?=';
//htmlentities() converti tous les accents en entités HTML, ENT_QUOTES Convertit en + les guillemets doubles et les guillemets simples, en entités HTML
$message = htmlentities($_POST['message'], ENT_QUOTES, 'UTF-8');
//ajoute des sauts de ligne HTML si l'utilisateur en a utilisé
$message = nl2br($message);
//en fin, on envoi le mail
if(mail($votre_adresse_mail, $sujet, $message, $entetes_du_mail)){
echo "<p>Le mail à été envoyé avec succès !</p>";
}else{
echo "<p>Une erreur est survenue, le mail n'a pas été envoyé.</p>";
}
}
}
<form action="contact.php" method="post">
Mail : <input type="text" name="mail">
<br>
Sujet : <input type="text" name="sujet">
<br>
Message : <textarea name="message" cols="40" rows="20"></textarea>
<br>
<input type="submit" name="envoyer" value="Envoyer">
</form>


Avatar du membre
Mammouth du PHP | 1564 Messages

17 déc. 2023, 18:30

Entourer le code PHP des balise ouvrante et fermante : <?php et ?>