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

PHP & Base de données Discussion :

Formulaire de contact en php (email non reçu)


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Formulaire de contact en php (email non reçu)
    Bonjour,
    J'ai crée un formulaire en HTML.
    Un fichier javascript permet de modifier mon formulaire lorsque le visiteur click sur envoyer et se fichier javascript post dans le fichier php. J'ai bien la confirmation de la part de javascript que mon injection ajax (post) dans mon fichier php est un success mais je ne reçois pas d'email..
    Le site est hébergé sur un serveur OVH.

    J'ai fais de nombreuses vérifications depuis 2 jours mais je dois dire que je suis perdu...

    Je tiens à préciser que dans le fichier il est indiqué monemail@outlook.fr mais le fichier hébergé comporte la bonne adresse email.

    Merci par avance

    frmContact.php

    frmContact.js

    index - Copie.html

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Il y a trop d'éléments, il faut simplifier a situation pour déterminer l'origine du problème.

    L'utilisation de la fonction mail() est un problème classique, commence par la tester en modifiant ton script PHP et en l'exécutant directement.
    Ensuite tu pourras ajouter le formulaire qui tapera directement sur le script.
    Et pour finir $.ajax (que tu pourrais d'ailleurs remplacer par fetch()).
    Ainsi, pas-à-pas, tu identifieras l'origine du blocage.

    Script modifié :

    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
    <?php
    // Vérifier si le formulaire a été soumis
    // if ($_SERVER["REQUEST_METHOD"] === "POST") {
     
      // Récupérer les valeurs des champs du formulaire
      /*
      $firstName = $_POST["fName"];
      $lastName = $_POST["lName"];
      $company = $_POST["company"];
      $email = $_POST["email"];
      $message = $_POST["message"];
      */
     
      // Valeurs de test
      $firstName = 'Prénom test';
      $lastName = 'Nom test';
      $company = 'Entreprise test';
      $email = 'E-mail test';
      $message = 'Message test';
     
      // Destinataire de l'e-mail
      $to = "monemail@outlook.fr";
     
      // Sujet de l'e-mail
      $subject = "Nouveau message depuis le formulaire de contact";
     
      // Contenu de l'e-mail
      $Content = "Prénom : " . $firstName . "\n";
      $Content .= "Nom : " . $lastName . "\n";
      $Content .= "Entreprise : " . $company . "\n";
      $Content .= "Adresse email : " . $email . "\n";
      $Content .= "Message : " . $message . "\n";
     
      // En-têtes de l'e-mail
     $headers = "From: Website <monemail@outlook.fr>\r\nReply-To: monemail@outlook.fr";
     
      // Envoyer l'e-mail
      $mailSent = mail($to, $subject, $Content, $headers);
     
      // Vérifier si l'e-mail a été envoyé avec succès
      if ($mailSent) {
        echo "L'e-mail a été envoyé avec succès.";
      } else {
        echo "Une erreur s'est produite lors de l'envoi de l'e-mail.";
      }
    // }

    J'ai bien la confirmation de la part de javascript que mon injection ajax (post) dans mon fichier php est un success mais je ne reçois pas d'email..
    Tu ne testes pas le message affiché par PHP. Quel est-il dans la console JS ?

    ----

    Par ailleurs, ton script PHP comporte une balise de fin et un retour à la ligne
    => Tu envoies des caractères supplémentaires, il faut retirer cette balise de fin (bonne pratique)

    https://www.php.net/manual/en/langua...ax.phptags.php :
    If a file contains only PHP code, it is preferable to omit the PHP closing tag at the end of the file. This prevents accidental whitespace or new lines being added after the PHP closing tag, which may cause unwanted effects because PHP will start output buffering when there is no intention from the programmer to send any output at that point in the script.
    Nom : L39.png
Affichages : 122
Taille : 6,6 Ko
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    quand vous avez fait tout ce que Séb a indiqué dans son message, je vous conseille de tester votre code en envoyant l'e-mail à une boite de l'hébergement ovh parce que les boites "gratuites" ont beaucoup de filtres à l'arrivée.
    et ces filtres peuvent envoyer les e-mails dans le répertoires "spam" ou même complètement supprimer le message et j'ai déjà vu ce comportement avec des boites gmail, laposte, outlook, yahoo, sfr et orange.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci à vous pour votre aide.
    J'ai fais un test comme me l'a indiqué Seb et j'avais le même problème. Au final le problème venait de ma messagerie outlook (bien vu Mathieu).
    Je vais regarder comment fonctionne fetch() et supprimer la balise de fin de mon fichier PHP.
    Je commence tout juste mes cours en auto-formation, le but est de crée un site web CV comme projet pour pouvoir rejoindre une école de développeur web.
    Merci !

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Je commence tout juste mes cours en auto-formation
    Quelle formation suis-tu ?

    ----

    Pour aller un chouilla plus loin, il faut plutôt vérifier la bonne soumission d'un formulaire de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // if ($_SERVER["REQUEST_METHOD"] === "POST") { // Pas suffisant
    if (isset($_POST['fName'], $_POST['lName'], $_POST['company'], $_POST['email'], $_POST['message'])) {
      // Formulaire soumis et complet
      // ...
    Ainsi tu vérifies que les valeurs attendues sont bien toutes présentes.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2023
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai fais les cours gratuits et actuellement je fais la formation LinkedIn "devenir-developpeur-developpeuse-web-front-end" (premier mois gratuit), cela me permet d'avoir de petites bases avant d'intégrer l'école.


    A propos du fait de vérifier que le formulaire soit complet, certaines informations ne sont pas obligatoires (exemple: entreprise). De plus j'utilise la fonction "required" dans les balises HTML, si les champs sont vides il est impossible de valider le formulaire. Mais il est peut être de bonne pratique de quand même vérifier dans le code PHP ?

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    certaines informations ne sont pas obligatoires (exemple: entreprise).
    Le champ "company" sera quand même soumis, et arrivera vide.

    De plus j'utilise la fonction "required" dans les balises HTML, si les champs sont vides il est impossible de valider le formulaire.
    Il ne faut pas compter là-dessus, c'est facilement désactivable (Clic droit > Inspecter > Faire sauter le "required"), et le script PHP peut aussi recevoir directement un POST externe.
    En fait, il faut toujours a minima une vérif côté serveur. Les vérifs côté client sont bonus, pour l'UX (eXpérience Utilisateur).

    Mais il est peut être de bonne pratique de quand même vérifier dans le code PHP ?
    Il faut toujours considérer les valeurs en entrée PHP comme incomplètes et douteuses.
    Et c'est plus qu'une bonne pratique, c'est une nécessité absolue sous peine de plantages, données incohérentes, et/ou failles de sécurité.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. Formulaire de contact xhtml/php ne me renvoi rien
    Par 0n31l dans le forum Langage
    Réponses: 8
    Dernier message: 12/02/2011, 00h51
  2. [CS4] Formulaire de contact Flash + PHP Erreur
    Par julien1199 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 17/10/2010, 22h28
  3. Formulaire de contact XML PHP pour site en Flash
    Par suly style dans le forum Flash
    Réponses: 1
    Dernier message: 28/12/2009, 00h02
  4. Formulaire de contact envoyé par email
    Par dumb_kangaroo dans le forum Langage
    Réponses: 8
    Dernier message: 29/08/2008, 03h55
  5. formulaire de contact Flash/Php
    Par flavioteca dans le forum Flash
    Réponses: 5
    Dernier message: 01/04/2008, 20h31

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