[RESOLU] Création d'un formulaire de contact

Eléphanteau du PHP | 12 Messages

08 déc. 2020, 18:38

Donc, je viens de rajouter le method=post et ai supprimé la ligne numéro (pas très importante pour l'instant, je verrai plus tard pour l'ajouter si nécessaire).

Mais ça ne fait toujours rien. Je suis renvoyé vers une page blanche (cette fois ci url: /formcontact.php). Aucun message d'erreur, aucun message d'opération réussie, rien. Même si le formulaire est vide et que j'appuie sur envoyer, je suis redirigé.

Pour ne pas reposter le code, j'ai modifié mon message précédent.


Si je veux mettre le code dans mon index.html et supprimer le formcontact.php, où est-ce que je dois le mettre?


Désolé, comme j'ai dit je suis totalement novice en php

Mammouth du PHP | 2672 Messages

08 déc. 2020, 19:14

quelle est l'url complète qui s'affiche dans la barre du navigateur quand formcontact.php affiche une page blanche ?

Eléphanteau du PHP | 12 Messages

08 déc. 2020, 19:24

L'url du site suivit du nom de fichier du formulaire de contact, donc:

http://www.lamainmagique.be/dev/formcontact.php

Mammouth du PHP | 2672 Messages

08 déc. 2020, 19:32

mieux vaut faire un copier/coller intégral sans retoucher au code ensuite, car sinon le premier if retourne false et comme il n'y a pas de else à ce if, rien ne s'affiche.

Eléphanteau du PHP | 12 Messages

08 déc. 2020, 19:34

Un copier/coller de quel code pour le coup?

Avatar du membre
Mammouth du PHP | 1503 Messages

08 déc. 2020, 20:03

mettre name="envoyer" sur l'input submit ;)

si tu souhaite mettre du PHP dans un fichier html ça ne fonctionnera pas, tu peut renommer ton fichier index.html en index.php sinon

Avatar du membre
Mammouth du PHP | 1503 Messages

08 déc. 2020, 21:15

tu devrais enlever ton mail sur ton précédent post pour pas que les robots le sniff :wink:

Eléphanteau du PHP | 12 Messages

08 déc. 2020, 22:06

C'est bon! J'ai trouvé un autre code et l'ai implanté dans le fichier index et ai donc modifié l'extension en .php et ça fonctionne.

Evidement, une réponse mène à une autre question...
Le code en question a une fonctionnalité qui liste les erreurs (par exemple un champ non rempli) au dessus du formulaire. Comment faire pour changer cet emplacement (si c'est possible)?

Aussi, est-ce que cette ligne a une réelle utilité ou est-ce qu'elle peut être enlevée?

Code : Tout sélectionner

$contenu = '<html><head><title>La Main Magique</title></head><body>';


Voici le code général:
			<!-- DEBUT CODE PHP FORMULAIRE DE CONTACT -->
			<?php
// S'il y des données de postées
if ($_SERVER['REQUEST_METHOD']=='POST') {
  // Code PHP pour traiter l'envoi de l'email
  
  $nombreErreur = 0; // Variable qui compte le nombre d'erreur
  
  // Définit toutes les erreurs possibles
  if (!isset($_POST['email'])) { // Si la variable "email" du formulaire n'existe pas (il y a un problème)
    $nombreErreur++; // On incrémente la variable qui compte les erreurs
    $erreur1 = '<p>Il y a un problème avec la variable "email".</p>';
  } else { // Sinon, cela signifie que la variable existe (c'est normal)
    if (empty($_POST['email'])) { // Si la variable est vide
      $nombreErreur++; // On incrémente la variable qui compte les erreurs
      $erreur2 = '<p>Vous avez oublié de donner votre email.</p>';
    } else {
      if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        $nombreErreur++; // On incrémente la variable qui compte les erreurs
        $erreur3 = '<p>Cet email ne ressemble pas un email.</p>';
      }
    }
  }
    if (!isset($_POST['message'])) {
    $nombreErreur++;
    $erreur4 = '<p>Il y a un problème avec la variable "message".</p>';
  } else {
    if (empty($_POST['message'])) {
      $nombreErreur++;
      $erreur5 = '<p>Vous avez oublié de donner un message.</p>';
    }
  }

  
  if ($nombreErreur==0) { // S'il n'y a pas d'erreur
    // Récupération des variables et sécurisation des données
    $nom = htmlentities($_POST['nom']); // htmlentities() convertit des caractères "spéciaux" en équivalent HTML
    $email = htmlentities($_POST['email']);
    $message = htmlentities($_POST['message']);
    
    // Variables concernant l'email
    $destinataire = '; // Adresse email du webmaster
    $sujet = 'La Main Magique - Formulaire de contact'; // Titre de l'email
    $contenu = '<html><head><title>La Main Magique</title></head><body>';
    $contenu .= '<p>Bonjour, vous avez reçu un message à partir de votre site web.</p>';
    $contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
    $contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
    $contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
    $contenu .= '</body></html>'; // Contenu du message de l'email
    
    // Pour envoyer un email HTML, l'en-tête Content-type doit être défini
    $headers = 'MIME-Version: 1.0'."\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
    
    @mail($destinataire, $sujet, $contenu, $headers); // Fonction principale qui envoi l'email
    
    echo '<h2>Message envoyé!</h2>'; // Afficher un message pour indiquer que le message a été envoyé
  } else { // S'il y a un moins une erreur
    echo '<div style="border:1px solid #ff0000; padding:5px;">';
    echo '<p style="color:#ff0000;">Désolé, il y a eu '.$nombreErreur.' erreur(s). Voici le détail des erreurs:</p>';
    if (isset($erreur1)) echo '<p>'.$erreur1.'</p>';
    if (isset($erreur2)) echo '<p>'.$erreur2.'</p>';
    if (isset($erreur3)) echo '<p>'.$erreur3.'</p>';
    if (isset($erreur4)) echo '<p>'.$erreur4.'</p>';
    if (isset($erreur5)) echo '<p>'.$erreur5.'</p>';
    echo '</div>';
  }
}
?>		
			<!-- FIN CODE PHP FORMULAIRE DE CONTACT -->
		
			<!-- DEBUT CODE HTML FORMULAIRE DE CONTACT -->			
			<div class="container">
				<form method="post" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">
				<label>Nom</label>
				<input type="text" name="nom" size="30" placeholder="Prénom Nom">
    
				<label>Mail</label>
				<input type="text" name="email" size="30" placeholder="[email protected]">
    
				<label>Message</label>
				<textarea name="message" cols="60" rows="10" placeholder="Votre message..."></textarea>
    
				<input type="submit" name="submit" value="Envoyer" />
				</form>
			</div>	
			<!-- FIN CODE HTML FORMULAIRE DE CONTACT -->


Et merci de m'avoir fait penser à retirer l'adresse mail ;)

Avatar du membre
Mammouth du PHP | 1503 Messages

08 déc. 2020, 22:28

Comment faire pour changer cet emplacement (si c'est possible)?
Mettre le code ailleurs, ou l'entourer de balise HTML qui stylisera les réponses.
Aussi, est-ce que cette ligne a une réelle utilité ou est-ce qu'elle peut être enlevée?
Aucune utilité, lors de l'envoi, c'est automatiquement rajouté.

L'envoi de mail avec PHP peut être complexe, il faut retenir les principales règles comme le MIME, le Content-type et l'encodage du titre (comme mentionné sur mon tuto: Formulaire de contact PHP)

Bon courage pour la suite :D

Eléphanteau du PHP | 12 Messages

10 déc. 2020, 21:11

Merci beaucoup pour votre aide!