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 :

formulaire de contact PHP qui fonctionne pas


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut formulaire de contact PHP qui fonctionne pas
    Bonjour,

    Actuellement je suis en train de créer un petit site internet pour un site de transport. Une page me pause problème, c'est la page de contact qui est doté d'un formulaire de contact classique pour envoyer un email au responsable de la société via le site internet.

    J'ai récupéré un formulaire déjà créer sur internet qui semble fonctionnel, pour tester j'ai utilisé une adresse email qui est la mienne avec gmail et une autre outlook, mais IMPOSSIBLE DE RECEVOIR LEMAIL !!

    Pourtant le code est complet, il affiche bien message envoyé, j'ai bien précisé mon adresse email dans le code php.

    Est-ce que l'erreur peut venir de mon hébergeur 1and1 ? Ou autre ?

    Merci d'avance, un réponse rapide serait souhaitable help

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,
    Nous ne sommes pas une dsi de service, la demande d'urgence (même réelle), ne peut-être prise en compte ici, toutes aides est la bienvenue.
    Nous gagnerions du temps, si le problème exposé était accompagné de code (Nous ne connaissons pas tout Internet, il se peut que nous ayons loupé le code que tu as repris), ainsi que les éventuelles erreurs
    Merci de ta compréhension.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 51
    Par défaut
    Bonjour, oui désolé j'ai homis de préciser le code :

    Code : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     <?php
    // S'il y des données de postées
    if ($_SERVER['REQUEST_METHOD']=='POST') {
     
      // (1) Code PHP pour traiter l'envoi de l'email
     
      // 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 = 'rupltest@outlook.fr'; // Adresse email du webmaster (à personnaliser)
      $sujet = 'Titre du message'; // Titre de l'email
      $contenu = '<html><head><title>Titre du message</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 (en XHTML)
     
      // 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";
     
      // Envoyer l'email
      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é
      // (2) Fin du code pour traiter l'envoi de l'email
    }
    ?>
    <?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>';
        }
      }    // (3) Ici, il sera possible d'ajouter plus tard un code pour vérifier un captcha anti-spam.
     
      if ($nombreErreur==0) { // S'il n'y a pas d'erreur
        // Ici il faut ajouter tout le code pour envoyer l'email.
        // Dans le code présenté au chapitre précédent, cela signifie au code entre les commentaires (1) et (2).
      } 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>';
        // (4) Ici, il sera possible d'ajouter un code d'erreur supplémentaire si un captcha anti-spam est erroné.
        echo '</div>';
      }
    }
    ?>
        <form method="post" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">
          <p>Votre nom et prénom: <input type="text" name="nom" size="30" /></p>
          <p>Votre email: <span style="color:#ff0000;">*</span>: <input type="text" name="email" size="30" /></p>
          <p>Message <span style="color:#ff0000;">*</span>:</p>
          <textarea name="message" cols="60" rows="10"></textarea>
          <!-- Ici pourra être ajouté un captcha anti-spam (plus tard) -->
          <p><input type="submit" name="submit" value="Envoyer" /></p>
        </form>

  4. #4
    Membre averti
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Par défaut
    Bonsoir,

    Je suis loin d'être expert mais déja je regarderais si ma variable $_POST est vide ou pas.

    Mais je pense que le probléme vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <form method="post" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">
    je mettrais action="nom_de_ta_page_php.php"

    Cordialement.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Nicodu10 Voir le message
    ...l affiche bien "message envoyé", ...
    Normal :
    vu le code (sa logique et la chronologie des évènements), le message s'affiche même si le mail n'est pas envoyé (1), et même s'il y a des erreurs (2) !

    (1) Pas de vérification d'envoi
    (2) La gestion d'erreurs se trouve APRES l'envoi du mail !

    AS-TU au moins LU les commentaires dans le code ??
    Tu as certainement ZAPPE cette partie :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      if ($nombreErreur==0) { // S'il n'y a pas d'erreur
        // Ici il faut ajouter tout le code pour envoyer l'email.
        // Dans le code présenté au chapitre précédent, cela signifie au code entre les commentaires (1) et (2).

    Voici une METHODOLOGIE :
    Code : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    <?php
    // -------------------------------
    // Initialisation
    // -------------------------------
    	$nombreErreur 		= 0; // Variable qui compte le nombre d'erreur
    	$messageErreur 	= '';
    	$envoiMailMsg 		= '';
    	// Formulaire
    	$nom     = ''; 
    	$email   = '';
    	$message = '';
    // -------------------------------
    // S'il y des données de postées
    // A/ TRAITEMENT DU FORMULAIRE
    // -------------------------------
    if ( isset($_POST['submit']) )
    {
    	// ---------------------------
    	// 1/ RECUPERATION DES DONNEES
    	// ---------------------------
    	// Récupération des variables et sécurisation des données
    	// htmlentities() convertit des caractères "spéciaux" en équivalent HTML
    	$nom     = htmlentities($_POST['nom']); 
    	$email   = htmlentities($_POST['email']);
    	$message = htmlentities($_POST['message']);
     
    	// ---------------------------
    	// 2/ GESTION D'ERREURS
    	// ---------------------------
    	$champsObligatoires 	= '';
    	// Champs obligatoires
    	if ( empty($nom) ) 
    	{
    		$nombreErreur++;
    		$champsObligatoires .= '<li>Nom</li>';
    	}
    	if ( empty($email) ) 
    	{ 
    		$nombreErreur++;
    		$champsObligatoires .= '<li>Email</li>';
    	}
    	if ( empty($message) ) 
    	{
    		$nombreErreur++;
    		$champsObligatoires .= '<li>Message</li>';
    	}
    	if( !empty($champsObligatoires) )
    	{
    		$messageErreur 	.= '<p>Remplissez les champs obligatoires :<p><ul>'.$champsObligatoires.'</ul>';
    	}
    	// -------------
    	// Vérification Email :
    	if ( empty($email) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)===false ) 
    	{ 
    		$nombreErreur++;
    		$messageErreur 	.= '<p>Email invalide</p>';
    	}
    	// -------------
    	// autre vérification ?
    	// .........
     
    	// ---------------------------
    	// Pas d'erreur ? on envoi
    	// ---------------------------
    	if( $nombreErreur == 0 )
    	{
    		// ---------------------------
    		// 3/ ENVOI PAR MAIL
    		// ---------------------------
    		// Entete du mail
    		$headers = 'MIME-Version: 1.0'."\r\n";
    		$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n"; // Pour envoyer un email HTML, l'en-tête Content-type doit être défini
    		// -------------
    		// Adresse email du destinataire (à personnaliser)
    		$destinataire = 'rupltest@outlook.fr';
    		// -------------
    		// sujet (Titre du mail)
    		$sujet = 'Titre du message';
    		// -------------
    		// Contenu HTML => ON NE MET PAS LES BALISES <head>, body>, <html>
    		$contenu = '<div>';
    		$contenu .= '<p>Bonjour, vous avez reçu un message à partir de votre site web.</p>';
    		$contenu .= '<p><b>Nom</b>: '.$nom.'</p>';
    		$contenu .= '<p><b>Email</b>: '.$email.'</p>';
    		$contenu .= '<div><b>Message</b>: '.$message.'</div>';
    		$contenu .= '</div>';
    		// -------------
    		// Envoyer l'email => on TESTE l envoi
    		if( mail($destinataire, $sujet, $contenu, $headers) ) // OK
    		{
    			$envoiMailMsg = '<h2>Message envoyé!</h2>'; // Afficher un message pour indiquer que le message a été envoyé
    			// On vide les donnees
    			unset($_POST);
    			$nom     = ''; 
    			$email   = '';
    			$message = '';
    		// -------------
    		} else { // Erreur d'envoi !
    			$nombreErreur++;
    			$messageErreur 	.= '<p>Erreur lors de l\'envoi. Votre message n\'a pas été envoyé.</p>';
    		}
    		// -------------
    	}
    	// ---------------------------
    } // fin TRAITEMENT
    ?>
     
    <!-- ICI, on peut mettre le code HTML de DEBUT de la page -->
     
    <?php
    // -------------------------------
    // B/ AFFICHAGE ERREURS ?
    // -------------------------------
    if ($nombreErreur > 0) 
    {
    	// AFFICHAGE du message d'erreur
    	if ( !empty($messageErreur) ) 
    	{
    		echo 
    '	<div style="border:1px solid #ff0000; padding:5px;">
    		<p style="color:#ff0000;">Désolé, il y a eu '.$nombreErreur.' erreur(s) :</p>
    		<div>'.$messageErreur.'</div>
    	</div>
    ';
    	}
    // -------------------------------
    // Mail ENVOI OK
    } elseif ( !empty($envoiMailMsg) ) 
    {
    	echo $envoiMailMsg;
    }
    // -------------------------------
    // C/ AFFICHAGE FORMULAIRE
    // -------------------------------
    	N.B. : les champs obligatoires : nom, email, message
    ?>
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; // sur la même page ?>">
    	<p>
    		<label for="idnom">Vos nom et prénom<span style="color:#ff0000;">*</span> : </label>
    		<input id="idnom" type="text" name="nom" size="30" value="<?php echo $nom; ?>" required="required"/>
    	</p>
    	<p>
    		<label for="idemail">Votre email<span style="color:#ff0000;">*</span> : </label>
    		<input id="idemail" type="text" name="email" size="30" value="<?php echo $nom; ?>" required="required"/>
    	</p>
    	<p>
    		<label for="idmessage">Message <span style="color:#ff0000;">*</span> :<br />
    		<textarea id="idmessage" name="message" cols="60" rows="10" required="required"><?php echo $message; ?></textarea>
    	</p>
    	<!-- Ici pourra être ajouté un captcha anti-spam (plus tard) -->
    	<p>
    		<input type="submit" name="submit" value="Envoyer" />
    	</p>
        </form>
     
    <!-- ICI, on peut mettre le code HTML de FIN de la page -->

Discussions similaires

  1. fonction php qui fonctionne pas !
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2012, 13h30
  2. [AJAX] code en javascript et php qui fonctionne sous FF et pas sous IE
    Par witch dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/01/2008, 12h13
  3. [PHP-JS] foreach qui fonctionne pas
    Par tiger63 dans le forum Langage
    Réponses: 4
    Dernier message: 06/04/2007, 15h49
  4. Formulaire avec du PHP qui ne marche pas !
    Par Sandara dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2006, 18h26

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