IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

vérification du code d'un formulaire de contact


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut vérification du code d'un formulaire de contact
    Bonjour,

    Je ne connais pas le PHP et j'en suis bien désolé ! J'ai créé quand même mon site en "include" avec 3 pages php et cela fonctionne bien. Mon problème est sur la page de contact : je peux recevoir les messages des gens mais je n'ai pas de messages d'erreur au cas où ils ne renseigneraient pas un des champs requis. D'après ce que j'ai compris mon formulaire fait appel à un fichier send.php qui est bien dans la racine de mon site. Est-il possible que quelqu'un puisse vérifier mes fichiers ?
    Je vous remercie.

    mon site en ligne https://cantaloop.eu

    ma page contact.php :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?php
      $options = array(
        'title'=>'Contactez-nous',
        'description'=>'formulaire de contact',
        'navMenu'=>'contact'
        );
      include('header.php');
    ?>
        <div class="container-contact mt-5">
     
     
     
            <?php if(isset($_SESSION['cyrilruiz']['errors'])): ?>
              <div class="alert alert-warning">
                <?php echo implode('<br>', $_SESSION['cyrilruiz']['errors']); ?>
              </div>
            <?php endif; ?>
     
            <?php if(isset($_SESSION['cyrilruiz']['success'])): ?>
              <div class="alert alert-success">
                Votre message a bien été envoyé !
              </div>
            <?php endif; ?>
     
    </div>
     
    <section id="fond-contact">
            <form action="send.php" method="POST" class="form" novalidate>
              <h1 data-aos="fade-down" data-aos-easing="linear" data-aos-duration="1500" id="contact-text-custom">Contact</h1>
              <h3 id="contact-comments">Avez-vous un projet qui vous tient à coeur ? Juste quelques questions ou commentaires ? Vous voulez m'inviter à votre prochain anniversaire ? Remplissez ce formulaire ci-dessous et je reviendrais vers vous le plus rapidemement possible !</h3>
              <div class="form-group" id="input_nom">
                <!-- <label for="name">Nom</label> -->
                <input type="text" class="form-control" id="name" placeholder="Nom" name="name" value="<?php echo isset($_SESSION['cyrilruiz']['data_memory']['name']) ? $_SESSION['cyrilruiz']['data_memory']['name'] : '' ; ?>" required>
              </div>
              <div class="form-group" id="input_email">
                <!-- <label for="email">Email</label> -->
                <input type="email" class="form-control" id="email" name="email" placeholder="Email" value="<?php echo isset($_SESSION['cyrilruiz']['data_memory']['email']) ? $_SESSION['cyrilruiz']['data_memory']['email'] : ''; ?>"  required>
              </div>
              <div class="form-group" id="input_objet">
                <!-- <label for="subject">Objet</label> -->
                <input type="subject" class="form-control" id="subject" name="subject" placeholder="Objet" value="<?php echo isset($_SESSION['cyrilruiz']['data_memory']['subject']) ? $_SESSION['cyrilruiz']['data_memory']['subject'] : ''; ?>" required>
              </div>
              <div class="form-group" id="input_message">
              <!-- <label for="message">Message</label> -->
                <textarea name="message" class="form-control" placeholder="Message" id="message" cols="30" rows="10"><?php echo isset($_SESSION['cyrilruiz']['data_memory']['message']) ? $_SESSION['cyrilruiz']['data_memory']['message'] : ''; ?></textarea>
              </div>
              <input type="submit" id="btn" value="Envoyer">
              <a id="tel_custom" href="tel:+33662689872">Tel: (+33) 06-62-68-98-72</a>
              <a id="email_custom"  href="mailto:lazycan69@gmail.com?subject=Demande%20de%20renseignements&body=Bonjour,%0D%0A%0D%0AVoici%20mes%20coordonnées%20:%0D%0A%20Nom :%0D%0Atéléphone :">lazycan69@gmail.com</a>
            </form>
     </section>         
     
    <?php include('footer.php');?>
    <?php
     
      if(isset($_SESSION['cyrilruiz'])){
        unset($_SESSION['cyrilruiz']['data_memory']);
        unset($_SESSION['cyrilruiz']['errors']);
        unset($_SESSION['cyrilruiz']['success']);
      }
     
    ?>


    ma page send.php :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
      session_start();
     
      $errors = [];
     
     
      //  if( empty($_POST['name']) )
      if( !isset($_POST['name']) || $_POST['name'] == '' ){
        $errors['name'] = "Vous n'avez pas précisé votre nom";
      }
      if( !isset($_POST['email']) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)  ){
        $errors['email'] = "Vous n'avez pas précisé votre email ou alors celui-ci n'est pas valide";
      }
      if( !isset($_POST['subject']) || $_POST['subject'] == '' ){
        $errors['subject'] = "Vous n'avez pas précisé votre objet";
      }
      if( !isset($_POST['message']) || $_POST['message'] == '' ){
        $errors['message'] = "Vous n'avez pas précisé votre message";
      }
     
      if(!empty($errors)){
     
        $_SESSION['cyrilruiz']['errors'] = $errors;
        $_SESSION['cyrilruiz']['data_memory'] = $_POST;
     
      }else{
     
        $emailTo = 'lazycan69@gmail.com';
        $name = htmlentities($_POST['name']);
        $emailFrom = htmlentities($_POST['email']);
        $subject = htmlentities($_POST['subject']);
        $message = htmlentities($_POST['message']);
        $message = $name . "<br>" . $emailFrom . "<br>"  . $subject . "<br>"  . $message;
     
     
        $headers = 'From:cyrilruiz.fr' .PHP_EOL;
        $headers .= 'Reply-to:' . $emailFrom . PHP_EOL;
        $headers .= "Content-type: text/html; charset= iso-8859-1\n";
     
     
     
        if(mail($emailTo, $subject, $message, $headers)){
     
          $_SESSION['cyrilruiz']['success'] = 1;
     
        }else{
     
          $errors = "L'envoi a échoué";
          $_SESSION['cyrilruiz']['errors'] = $errors;
     
        }
     
      }
     
     
     
      header('Location: contact.php');
      exit();

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Le fait que $errors soit un tableau complique son affichage. Pourquoi pas simplement une chaîne de caractères ?

    En tout cas, pas étonnant que ça ne soit pas affiché, vu que tu ne l'affiches pas dans send.php...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je ne comprends pas ta réponse...mais tu dois t'en douter. J'aurais pas dû dire que je ne connaissais pas le PHP je pense...

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Voilà comment je ferais (je ne mets que la partie de send.php où on gère les erreurs (lignes 5 à 27 dans ton code)) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    $errors = "";   // j'ai transformé $errors en string au lieu de array
     
     
    //  if( empty($_POST['name']) )
    if( !isset($_POST['name']) || $_POST['name'] == '' ){
        $errors = "Vous n'avez pas précisé votre nom";
    }
    if( !isset($_POST['email']) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)  ){
        $errors= "Vous n'avez pas précisé votre email ou alors celui-ci n'est pas valide";
    }
    if( !isset($_POST['subject']) || $_POST['subject'] == '' ){
        $errors = "Vous n'avez pas précisé votre objet";
    }
    if( !isset($_POST['message']) || $_POST['message'] == '' ){
        $errors = "Vous n'avez pas précisé votre message";
    }
     
    if(!empty($errors)){
     
        $_SESSION['cyrilruiz']['errors'] = $errors;
        $_SESSION['cyrilruiz']['data_memory'] = $_POST;
        echo "<br/>".$errors."<br/>";             // ici on affiche $errors (je l'encadre par 2 <br/> pour être sûr que ça reste visible)
     
    }

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci d'avoir pris du temps à me répondre. J'ai fait les changements que tu m'as proposé mais quand j'envoie le formulaire, il me dirige vers la page (blanche) send.php c'est tout.


    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
     
      session_start();
     
      $errors = "";   // j'ai transformé $errors en string au lieu de array
     
     
    //  if( empty($_POST['name']) )
    if( !isset($_POST['name']) || $_POST['name'] == '' ){
        $errors = "Vous n'avez pas précisé votre nom";
    }
    if( !isset($_POST['email']) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)  ){
        $errors= "Vous n'avez pas précisé votre email ou alors celui-ci n'est pas valide";
    }
    if( !isset($_POST['subject']) || $_POST['subject'] == '' ){
        $errors = "Vous n'avez pas précisé votre objet";
    }
    if( !isset($_POST['message']) || $_POST['message'] == '' ){
        $errors = "Vous n'avez pas précisé votre message";
    }
     
    if(!empty($errors)){
     
        $_SESSION['cyrilruiz']['errors'] = $errors;
        $_SESSION['cyrilruiz']['data_memory'] = $_POST;
        echo "<br/>".$errors."<br/>";             // ici on affiche $errors (je l'encadre par 2 <br/> pour être sûr que ça reste visible)
     
    }
     
        $emailTo = 'lazycan69@gmail.com';
        $name = htmlentities($_POST['name']);
        $emailFrom = htmlentities($_POST['email']);
        $subject = htmlentities($_POST['subject']);
        $message = htmlentities($_POST['message']);
        $message = $name . "<br>" . $emailFrom . "<br>"  . $subject . "<br>"  . $message;
     
     
        $headers = 'From:cyrilruiz.fr' .PHP_EOL;
        $headers .= 'Reply-to:' . $emailFrom . PHP_EOL;
        $headers .= "Content-type: text/html; charset= iso-8859-1\n";
     
     
     
        if(mail($emailTo, $subject, $message, $headers)){
     
          $_SESSION['cyrilruiz']['success'] = 1;
     
        }else{
     
          $errors = "L'envoi a échoué";
          $_SESSION['cyrilruiz']['errors'] = $errors;
     
        }
     
      }
     
     
     
      header('Location: contact.php');
      exit();

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    normal, car pas possible d'envoyer un header après avoir fait de l'affichage. Donc ma ligne 26 (echo "<br/>".$errors."<br/>";), je la mettrais plutôt au début de contact.php (premières lignes) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    session_start();
    if ( $_SESSION['cyrilruiz']['errors']) echo $_SESSION['cyrilruiz']['errors'];
    et j'enlèverais la ligne 26 de send.php

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mai 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    ça ne change rien. j'ai mis cette ligne au débt de contact.php (ligne 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session_start();
    if ( $_SESSION['cyrilruiz']['errors']) echo $_SESSION['cyrilruiz']['errors'];
    et j'ai bien enlevé la ligne 26 dans send.php

    Ne perd pas plus ton temps c'est pas grave, je trouverai une autre solution sinon.
    Merci bcp et bon week-end

Discussions similaires

  1. Manque bout de code "Formulaire de contact"
    Par Galaxya dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 08/10/2016, 11h52
  2. [XL-2007] VB Formulaire de contact, code
    Par Esther08 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 23/06/2015, 16h49
  3. Souci formulaire de contact (code php)
    Par bsteeve dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 05/02/2011, 09h48
  4. Problème d'accès formulaire de contact
    Par Mystic26 dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2005, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo