Formulaire php

Bonjour; je suis debutant en PHP, et à 61 ans je me lance.

Je voudrais savoir si mon code est bon car je ne peux le tester actuellement.

Merci de votre compréhension à tous.

Cdlt Martial

MON FORM DANS LE HTML

   <form name="contact_form" method="post" action="">
    <table width="500">
    <tr>
     <td valign="top">
      <label for="nom">Nom *</label>
     </td>
     <td valign="top">
      <input  type="text" name="nom" maxlength="50" size="30" value="<?php if (
isset($_POST['nom'])) echo htmlspecialchars($_POST['nom']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top"">
      <label for="prenom">Prénom *</label>
     </td>
     <td valign="top">
      <input  type="text" name="prenom" maxlength="50" size="30" value="<?php if
 (isset($_POST['prenom'])) echo htmlspecialchars($_POST['prenom']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="email">Email Addresse *</label>
     </td>
     <td valign="top">
      <input  type="text" name="email" maxlength="80" size="30" value="<?php if 
(isset($_POST['email'])) echo htmlspecialchars($_POST['email']);?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="telephone">Téléphone</label>
     </td>
     <td valign="top">
      <input  type="text" name="telephone" maxlength="30" size="30" value="
<?php if (isset($_POST['telephone'])) echo htmlspecialchars($_POST['telephone'])
;?>">
     </td>
    </tr>
    <tr>
     <td valign="top">
      <label for="commentaire">Commentaire *</label>
     </td>
     <td valign="top">
      <textarea  name="commentaire" cols="28" rows="10"><?php if (isset($_POST[
'commentaire'])) echo htmlspecialchars($_POST['commentaire']);?></textarea>
     </td>
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value=" Envoyer ">
     </td>
    </tr>
    </table>
    </form>

<?php
if(isset($_POST['email'])) {
 
    // ENTETE DE L'E_MAIL
    $email_to = "***@***";
    $email_subject = "E_mail en provenance de votre site";
 
    function died($error) {
        // AFFICHAGE DES ERREURS
        echo "Désolé, mais des erreurs ont été détectées.<br /><br />";
        echo "Ces erreurs apparaissent ci-dessous.<br /><br />";
        echo $error."<br /><br />";
        echo "Merci de bien vouloir les corriger.<br /><br />";
        die();
    }
 
 
    // SI LES DONNEES ATTENDUES EXISTENT
     if(!isset($_POST['nom']) ||
        !isset($_POST['prenom']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['commentaire'])) {
        died(
'Désolé, votre formulaire semble poser des problèmes!!!<br />';

    }
 
     
 
    $nom = $_POST['nom']; // required
    $prenom = $_POST['prenom']; // required
    $email = $_POST['email']; // required
    $telephone = $_POST['telephone']; // not required
    $commentaire = $_POST['commentaire']; // required
 
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
 
    if(!preg_match($email_exp,$email)) {
      $error_message .= 
'L\'adresse e-mail que vous avez entrée ne semble pas valide!!!<br />';
    }
   
      // CARACTERES ALPHANUMERIQUES + le point et le tiret 6
      $string_exp = "/^[A-Za-z0-9 .'-]+$/";
   
    if(!preg_match($string_exp,$nom)) {
      $error_message .= 
'Le nom que vous avez entré ne semble pas valide!!!<br />';
    }
   
    if(!preg_match($string_exp,$prenom)) {
      $error_message .= 
'Le prénom que vous avez entré ne semble pas valide!!!<br />';
    }
   
    if(strlen($commentaire) < 2) {
      $error_message .= 
'Le commentaire que vous avez entré ne semble pas valide!!!<br />';
    }
   
    if(strlen($error_message) > 0) {
      died($error_message);
    }
 

    $email_message  = "<html><body>";
    $email_message .= "<img src="https://13semaines.com/assets/img/logo-5.png" alt="Logo">";
    $email_message .= "<p>Contenu du mail</p>";
    $email_message .= "Détail.\n\n";
    $email_message .= "Nom: ".$nom."\n";
    $email_message .= "Prenom: ".$prenom."\n";
    $email_message .= "Email: ".$email."\n";
    $email_message .= "Telephone: ".$telephone."\n";
    $email_message .= "Commentaire: ".$commentaire."\n";
    $email_message .= "</body></html>

  // CREATION MAIL HEADERS
   $headers = "From: .$email."\r\n";
   <!-- $headers = 'From: texte <'.$email.">\r\n".  (mettre cette ligne si la ligne du dessus ne marche pas) -->
   $headers .= "Reply-To: .$email."\r\n";
   $headers .= "MIME-Version: 1.0\r\n";
   $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
   $headers .= "X-Mailer: PHP/" . phpversion();
    mail($email_to, $email_subject, $email_message, $headers);
    ?>
     
    // MESSAGE AVEC SUCCES
     
    Merci de m'avoir contacté, votre mail m'est bien parvenu: Je vous recontacterai très bientôt!!!.
     
    <?php

    }

2 réponses

  1. Modérateur

    Bonjour,

    Après une rapide lecture je ne vois pas d'anomalie dans ce code.

    Toutefois, je te recommande d'appliquer les conseils donnés ici https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    (concernant la récupération "propre" des variables AVANT de les utiliser ainsi que l'ordre du code ( en prenant l'habitude de placer le maximum de code php AVANT le code html )

    Reviens nous voir lorsque tu auras modifié ton code, l'avoir testé et si tu rencontres des soucis...

    PS: A l'avenir, merci de poster dans le bon forum 'PHP'  et d'utiliser le bouton prévue pour poster du code (icone se trouvant dans la barre de menu lorsque tu rédiges un message)


    1. Merci pour ta réponse!!! Je vais essayer d appliquer au mieux tes conseils. ???? et essayer de m améliorer.