Page 1 sur 2

Création d'un formulaire de contact

Posté : 05 déc. 2020, 19:57
par Dobby
Bonjour tout le monde.

Je suis débutant dans le codage mais j'ai quelques petites bases en html, css, et très peu en php ou javascript... D'où ma venue ici.

J'essaye de faire un formulaire de contact. La partie html et css, ça va. Une fois qu'on arrive au php/java, ça coince. J'ai essayé plusieurs modèles sur divers sites d'entraide mais aucun ne fonctionne...

Quelqu'un pourrait donc m'aider à coder ce formulaire plus ou moins important?

Le formulaire sera insérer dans un site vitrine, responsive, d'une seule page.

J'aimerais que le formulaire ai les champs suivants:
- Nom
- N° tel
- Email
- Message

Ainsi que deux boutons:
- Envoyer
- Réinitialiser (pour vider les champs du formulaire)

Et si possible, un message lorsque:
- Le formulaire a bien été envoyé
- L'envoi a échoué


En espérant ne pas en demander trop...
Merci d'avance,
Dobby.

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 17:33
par two3d
Salut, si tu veux pas t'embêter, je proposes un tuto pour la création d'un formulaire de contact en pure HTML/PHP: Formulaire de contact PHP

Et avec jQuery (librairie JavaScript) tu pourra envoyer ton formulaire sans recharger la page lors de l'envoi, en utilisant $.post



PS: attention à ne pas confondre JAVA et JavaScript ;)

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 19:28
par Dobby
Bonjour,

Merci pour ta réponse.

Le problème est toujours le même: lorsque j'appuie sur le bouton pour envoyer le formulaire, la page affiche le code du formulaire (http://prntscr.com/vwyaok)

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 19:34
par or 1
quelle est l'url de la page où s'affiche le formulaire ?

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 20:18
par Dobby
Le fichier index.html se trouve dans le dossier "Site" (pas publié actuellement donc).

Etant donné que le site est d'une seule page, tout se trouve dans index.html. Mais lorsque je clique sur envoyer, ça me renvoie sur "Site/contact.php"

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 20:46
par or 1
quelle est l'url de la page où s'affiche le formulaire ?

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 20:52
par Dobby
De base, donc avant utilisation:
index.html

Une fois que je clique sur "Envoyer" ça redirige la page (comme sur le screen que j'ai précédemment montré) et la nomme contact.php (contact.php étant le nom du fichier où le code du formulaire est écrit)

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 21:19
par or 1
quelle est l'url de la page où s'affiche le formulaire ?

l'url de la page qui contient le formulaire qui permet de répondre dans cette discussion est :
https:// forum.phpfrance.com/sujets-informatiques/topic281267.html#p465101

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 21:19
par two3d
si tu utilise du PHP il faut que l'extension de ton fichier soit .php, pas .html

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 21:32
par Dobby
La page index aussi?

Et du coup, est-ce que je crée une page contact.php (pour le code du formulaire) ou est-ce que je peux directement le mettre dans index (et donc, comment si oui) ?

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 21:37
par two3d
toutes les pages qui utilisent du code PHP

après si tu veux que tu ton site affiche une URL avec index.html, fait la réécriture d'URL de index.php vers index.html, ya bcp de tutos sur internet concernant ce point ;)

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 21:48
par Dobby
Mais du coup je ne comprends pas... (désolé! )

Si la page index doit être en php, elle ne s'affichera plus sur le navigateur, si?

Re: Création d'un formulaire de contact

Posté : 06 déc. 2020, 21:55
par two3d
si si, pas de souci

Re: Création d'un formulaire de contact

Posté : 08 déc. 2020, 16:16
par Dobby
Bonjour,

Je viens donc de réessayer.
Lorsque je clique sur "envoyer", je suis redirigé vers une page blanche intitulée: "/formcontact.php?nom=test&mail=test&numtel=test&sujet=test"
et je ne reçois aucun mail. Et ce, que le fichier soit en .php ou en .html.

Voici mes codes, peut-être aurez-vous plus facile pour m'aider...

index.html
	
			<div class="container">
			<form action="formcontact.php" method="post">

				<label for="nom">Nom</label>
				<input type="text" id="nom" name="nom" placeholder="Ecrivez votre nom">

				<label for="mail">Email</label>
				<input type="text" id="mail" name="mail" placeholder="Ecrivez votre email">

				<label for="sujet">Sujet</label>
				<textarea id="sujet" name="sujet" placeholder="Ecrivez votre message" style="height:200px"></textarea>

				<input type="submit" value="Envoyer">

			</form>
			</div>	
		
formcontact.php
<?php
$VotreAdresseMail="";//mettez ici votre adresse mail
if(isset($_POST['envoyer'])) { // si le bouton "Envoyer" est appuyé
    //on vérifie que le champ mail est correctement rempli
    if(empty($_POST['mail'])) {
        echo "Le champ mail est vide";
    } else {
        //on vérifie que l'adresse est correcte
        if(!preg_match("#^[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?@[a-z0-9_-]+((\.[a-z0-9_-]+){1,})?\.[a-z]{2,}$#i",$_POST['mail'])){
            echo "L'adresse mail entrée est incorrecte";
        }else{
            //on vérifie que le champ sujet est correctement rempli
            if(empty($_POST['sujet'])) {
                echo "Le champ sujet est vide";
            }else{
                //on vérifie que le champ message n'est pas vide
                if(empty($_POST['message'])) {
                    echo "Le champ message est vide";
                }else{
                    //tout est correctement renseigné, on envoi le mail
                    //on renseigne les entêtes de la fonction mail de PHP
                    $Entetes = "MIME-Version: 1.0\r\n";
                    $Entetes .= "Content-type: text/html; charset=UTF-8\r\n";
                    $Entetes .= "From:  <".$_POST['mail'].">\r\n";//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
                    $Entetes .= "Reply-To:  <".$_POST['mail'].">\r\n";
                    //on prépare les champs:
                    $Mail=$_POST['mail']; 
                    $Sujet='=?UTF-8?B?'.base64_encode($_POST['sujet']).'?=';//Cet encodage (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)
                    $Message=htmlentities($_POST['message'],ENT_QUOTES,"UTF-8");//htmlentities() converti tous les accents en entités HTML, ENT_QUOTES Convertit en + les guillemets doubles et les guillemets simples, en entités HTML
                    //en fin, on envoi le mail
                    if(mail($VotreAdresseMail,$Sujet,nl2br($Message),$Entetes)){//la fonction nl2br permet de conserver les sauts de ligne et la fonction base64_encode de conserver les accents dans le titre
                        echo "Le mail à été envoyé avec succès!";
                    } else {
                        echo "Une erreur est survenue, le mail n'a pas été envoyé";
                    }
                }
            }
        }
    }
}
?>

Re: Création d'un formulaire de contact

Posté : 08 déc. 2020, 18:05
par two3d
<form action="formcontact.php"> précise la m"thode (ici tu est en POST, là il y est envoyé en GET, d'où les querys dans l'URL

La CSS on s'en fout...

et ton fichier formcontact.php, c'est un peu bête de le mettre appart mais on peu faire comme ça, c'est plus chiant certes #-o

ensuite ton champs numtel n'existe pas dans la vérification en PHP, tu l'aura null part mentionné, si tu veux le récupérer, il est contenu dans $_POST['numtel'] (si il existe bien sûr, bien faire les vérifications des champs que renseigne l'utilisateur, ET NE JAMAIS LUI FAIRE CONFIANCE, toujours vérifier si c'est un mail, un num de tel, etc...)

Voilà, déjà en mettant la méthode post dans la balise <form> et la page formcontact sera bien traitée

Voir la DOC si besoin de plus d'infos sur les FORM: https://developer.mozilla.org/fr/docs/W ... laire_HTML