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


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Par défaut formulaire de contact
    Bonjour,

    J'ai un fomulaire de contact PHP qui fonctionnait jusqu'à il y a 15 jours t depuis plus rien. Les demandes de clients ne parviennent plus sur mon adresse mal. Je n'ai plus de retour sur mon adresse mail qui est destinataire de la page de contact php. Ni dans les spams !
    C'est inquiétant car je ne reçois plus les messages et demandes de mes clients.

    J'ai contacté mon hébergeur O2switch qui me dit qu'actuellement j'utilise une fonctionnalité de PHPMail qui peut rencontrer des erreurs d'authentifications vu que je ne bénéficie pas "des spf et dkim de l'hébergement".
    Il me dit de modifier ou de remplacer le script utilisé pour passer par nos serveurs SMTP ?

    J'ai essayé avec PHPMailer mais je rencontre des problèmes.

    Je vous remercie pour votre aide.
    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
    //on regarde si le formulaire est envoyé
    if(!empty($_POST)){
    	//si oui on extrait les données
    	extract($_POST);
    	$valid = true;
    	//on place un antispam
    	if($adress != ""){
    	}
    	else{
    	//on regarde si le nom est valide
    	if(empty($name)){
    		//si oui on déclare l'erreur
    		$valid = false;
    		$erreurnom = "You didn't write your name!";
    	}
    	if(!preg_match('/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,3})+$/', $email)){
    		$valid = false;
    		$erreuremail = "Error e-mail address!";
    	}
    	if(empty($email)){
    		$valid = false;
    		$erreuremail = "You didn't write your e-mail address!";
    	}
    	if(empty($subject)){
    			$valid = false;
    		$erreursujet = "What's going on?";
    	}
     
    	if(empty($message)){
    		$valid = false;
    		$erreurmessage = "Your didn't write your message!";
    	}
     
    	if ($valid){
    		$to = "adm.mib33@gmail.com";
    		$sujet = $name. " a posté une question depuis le site de l'école";
    		$subject = "";
    		$header = "From: $name <$email> \n";
    		$message = stripslashes($message);
    		$name = stripslashes($name);
    		// copie ? (envoie une copie au visiteur)
    		$copie = 'oui';
    		// envoyer une copie au visiteur ?
    		if ($copie == 'oui')
    		{
    			$cible = $to.','.$email;
    		}
    		else
    		{
    			$cible = $to;
    		};
    		if(mail($cible,$sujet,$message,$header)){
    			$erreur = "Your message has been sent!";
    			unset($name);
    			unset($email);
    			unset($subject);
    			unset($message);
    		}
    		else{
    		$erreur2 = "An error occured and your message hasn't been sent!";
    		}
    	}
    	}
    }
    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
    <?php /*?><?php if (isset($erreur)){ echo "<p>$erreur</p>"; } ?><?php */?>
                    <?php if (isset($erreur)){ echo "<p class=\"alert alert-success\">$erreur</p>"; } ?>
                    <?php /*?><?php if (isset($erreur2)){ echo "<p>$erreur2</p>"; } ?><?php */?>
                    <?php if (isset($erreur2)){ echo "<p class=\"alert alert-danger\">$erreur2</p>"; } ?>
     
              <form name="montessori" id="contactForm" method="post" action="../html/contact.php">
                      <div class="col-lg-6">
     
                        <p><label for="name"> </label>
                      <input type="text" name="name" id="name" placeholder="Name" autocomplete="off" tabindex="1" class="input-cont-textarea" value="<?php if (isset($name)) echo $name; ?>">
                      <span class="error-message">
                       <?php if(isset($erreurnom)) echo $erreurnom; ?>
                      </span>
                      </p>
                      </div>
                      <div class="col-lg-6">
     
                         <p><label for="email"></label>
                      <input type="email" name="email" id="email" placeholder="E-mail address" autocomplete="off" tabindex="3" class="input-cont-textarea" value="<?php if (isset($email)) echo $email; ?>">
                      <span class="error-message">
                      <?php if(isset($erreuremail)) echo $erreuremail; ?>
                      </span>
                      </p>
                      </div>
                      <div class="col-lg-12">
                        <!--<p class="text_cont"><input type="text" name="subject" placeholder="Quelle est votre question ?" class="input-cont-textarea"></p>-->
                        <p><label for="subject"> </label>
                      <input type="text" name="subject" id="subject" placeholder="Ask something" autocomplete="off" tabindex="1" class="input-cont-textarea" value="<?php if (isset($subject)) echo $subject; ?>">
                      <span class="error-message">
                       <?php if(isset($erreursujet)) echo $erreursujet; ?>
                      </span>
                      </p>
                      </div>
     
                      <div class="col-lg-12">
                        <!--<p class="text_cont"><textarea name="message" placeholder="Message" id="message" class="input-cont-textarea" cols="40" rows="10"></textarea></p>-->
                       <!-- <p class="text_cont">-->
                       <p> 
                       <textarea name="message" placeholder="Write your message..." id="message" tabindex="5" class="input-cont-textarea"  cols="40" rows="10"><?php if (isset($message)) echo $message; ?></textarea>
                        <span class="error-message">
                      <?php if(isset($erreurmessage)) echo $erreurmessage; ?>
                      </span>
                      </p>
                       <p class="alert text-danger">*Fields required</p>
                      </div>
                      <div class="col-lg-12">
                      <p>
     
                      <input type="submit" id="submitbtn" class="btn btn-default" value="Send message" tabindex="7"/>
                      </p>
                      </div>
                    </form>

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Si tu rencontres des problèmes, il faudrait nous dire les quels ainsi que les potentiels messages d'erreur.
    Pour ce qui est de PHPMailer, tu dis l'essayer mais dans le code que tu nous montre il n'en est pas du tout question

  3. #3
    Membre Expert
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Par défaut
    Merci pour ta réponse et ton aide.

    J'ai fait des essais et placé le script suivant :
    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
    <?php
        //$msg = "";
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    //include_once "../PHPMailer/PHPMailer.php";
    //include_once "../PHPMailer/Exception.php";
    //include_once "../PHPMailer/SMTP.php";
     
    if (isset($_POST['submit'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    require '../PHPMailer/PHPMailer.php';
    require '../PHPMailer/Exception.php';
    require '../PHPMailer/SMTP.php';
     
    $mail = new PHPMailer(true);
    try{
     
    //if we want to send via SMTP
    $mail ->SMTPDebug = 0;
    $mail->Host = "xxx.o2switch.net";
    $mail->isSMTP();
    $mail->SMTPAuth = true;
    $mail->Username = "user@nomdedomaine.frr";
    $mail->Password = "5*****";
    $mail->SMTPSecure = "ssl"; //TLS
    $mail->Port = 465; //587
     
    $mail->addAddress('societe@gmail.com');
    $mail->setFrom($email, $name);
    $mail->subject = $name. " a posé une question depuis le site internet";
    $mail->isHTML(true);
    $mail->Body = $message;
    //$mail->addAttachment($file);
     
    $mail->send();
       echo 'Bravo ! Votre message a été envoyé avec succès !';
    }
    catch (Exception $e) {
       echo 'Le message n\'a pas pu être envoyé ! Pouvez-vous réessayer !', $mail -> ErrorInfo;
    }}
    else {
    echo "message non envoyé";
    }
    ?>
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form method="post" action="sendemail.php" enctype="multipart/form-data">
    					<input class="form-control" name="subject" placeholder="Subject..."><br>
    					<input class="form-control" name="email" type="email" placeholder="Email..."><br>
    					<textarea placeholder="Message..." class="form-control" name="message"></textarea><br>
    					<input class="form-control" type="file" name="attachment"><br>
    					<input class="btn btn-primary" name="submit" type="submit" value="Send Email">
    				</form>
    le problème est que je ne récupère pas l'adresse mail du client (c'est mon adresse serveur qui apparait) :

    De: robert <user@nomdedomaine.fr>
    à: societe@gmail.com
    Date: 17 févr. 2020 15:39
    Objet: robert a posé une question depuis le site internet
    signé par: education-montessori.fr

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    Tu vas me trouver relou mais qu'entends-tu par "récupérer l'adresse mail du client" ?
    Tu veux dire que dans ton message tu ne vois pas l'email du client ? Pourtant, c'est lui le sender et on le voit dans ce que tu as copié/collé ::thinking::

    A ce propos, il ne faut surtout pas utiliser l'adresse du client en tant que sender, et c'est au moins en partie à cause de ça que tu ne reçois pas les emails avec ton ancien code.

    En effet, admettons que je remplisse ton formulaire de contact (hébergé sur TON serveur donc), et que je rentre une adresse @mon-domaine.org.
    mon-domaine.org a son SPF configuré pour dire que je peux envoyer des mails de MON SMTP et depuis MON serveur.
    Or toi, tu essayes d'envoyer un email en tant que @mon-domaine.org depuis TON serveur. Le SPF va retourner "Houlalala mon grand ! Non, tu ne peux pas !" .
    Suivant la config du SPF (sur le domaine @mon-domaine.org donc), le mail :
    • va être distribué quoi qu'il arrive (+all)
    • va être distribué mais en spam (~all)
    • ne va tout simplement pas être distribué (-all)


    Donc déjà, la première chose à faire est de changer la façon dont tu envoies les emails (que ça soit via SMTP ou non).
    1. Le sender (From) : c'est toi où une autre adresse email de ton domaine (existante ou non mais il vaut souvent mieux qu'elle existe), et pour la quelle le domaine à le droit de faire des envois
    2. Recipient (To) : pas de changements là-dessus
    3. Headers : Ajouter un header Reply-To avec l'adresse email de la personne qui a rempli le formulaire de contact afin de pouvoir utiliser la fonction "Répondre" quand tu lis un email

  5. #5
    Membre Expert
    Avatar de rodolphebrd
    Homme Profil pro
    Indépendant
    Inscrit en
    Novembre 2012
    Messages
    2 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 336
    Par défaut
    Je te remercie pour ton attention et c'est moi qui suis relou car je ne maitrise pas bien PHP. Je me suis fait aider pour cela mais ça ne suffit pas.
    En gros je voudrais un formulaire de contact simple qui me retourne le nom, le message et l'adresse mail du client qui fait une demande depuis la page contact.php.
    Ça marchait jusqu'à il y 2 semaines.

  6. #6
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    Bonjour, dans le message de 10h04, le champ subject n'est jamais lu côté PHP (pas de $_POST['subject']) et la variable $_POST['name'] est toujours vide (pas de champ dans le formulaire).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/01/2006, 08h23
  2. [Formulaire] de contact
    Par inferno66667 dans le forum Langage
    Réponses: 6
    Dernier message: 19/12/2005, 20h32
  3. Prob avec formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2005, 19h53
  4. Prob avec PHP sur le formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 18h06
  5. Problème d'accès formulaire de contact
    Par Mystic26 dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2005, 17h47

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