Pages :
Bonjour, je débute en php et là j'ai un problème de formulaire sur un site hébergé chez one.com (PHP 7.3). Le message formulaire envoyé s'affiche bien mais je ne reçois rien. Problème de code ? de configuration PHP ? Ou il manque un truc ?

Merci de votre aide.

Le formulaire :


<div class="row">
			<div class="col-md-8 col-sm-12 contact_content_left">
				<div class="content_big_title">
					Consultation <span class="text_color">en ligne</span>
				</div>
				<div class="contact_small_text">
					Merci de décrire l'objet de votre demande.<br/>
					Envoyez vos documents et photos au format PDF ou JPG par <a href="https://wetransfer.com/"><u>WeTransfer</u></a> ou <a href="http://www.dropbox.com"><u>Dropbox</u></a>.
				</div>
        <form name="contact_form" method="post" action="" class="contact_form">
          <div class="row">
						<div class="col-md-6 col-sm-12">
							<input type="text" class="contact_form_name" name="name" id="name" placeholder="Votre nom *" required/>
						</div>
            <div class="col-md-6 col-sm-12">
							<input type="text" class="contact_form_surname" name="surname" id="surname" placeholder="Votre prénom *" required/>
						</div>
          </div>
          <div class="row">
						<div class="col-md-6 col-sm-12">
							<input type="email" class="contact_form_email" name="email" id="email" placeholder="Votre email *" required/>
						</div>
            <div class="col-md-6 col-sm-12">
							<input type="phone" class="contact_form_phone" name="phone" id="phone" placeholder="Votre téléphone *" required/>
						</div>
          </div>
          <div class="contact_small_text">
            Adresse de la construction :
          </div>
          <div class="row">
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="rue" id="rue" placeholder="Rue *" required/>
            </div>
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="cplt" id="cplt" placeholder="Complément d'adresse"/>
            </div>
          </div>
          <div class="row">
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="zip" id="zip" placeholder="Code postal *" required/>
            </div>
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="ville" id="ville" placeholder="Ville *" required/>
            </div>
          </div>
          <div class="row">
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="dpt" id="dpt" placeholder="Département *" required/>
            </div>
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="pays" id="pays" placeholder="Pays *" required/>
            </div>
          </div>
          <div class="contact_small_text">
	           Votre adresse :
          </div>
          <div class="row">
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="rue" id="rue" placeholder="Rue *" required/>
            </div>
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="cplt" id="cplt" placeholder="Complément d'adresse"/>
            </div>
          </div>
          <div class="row">
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="zip" id="zip" placeholder="Code postal *" required/>
            </div>
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="ville" id="ville" placeholder="Ville *" required/>
            </div>
          </div>
          <div class="row">
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="dpt" id="dpt" placeholder="Département *" required/>
            </div>
            <div class="col-md-6 col-sm-12">
              <input type="text" class="contact_form_address" name="pays" id="pays" placeholder="Pays *" required/>
            </div>
          </div>
          <div class="contact_small_text">
            Description de votre demande :
          </div>
					<div class="contact_form_message_block">
						<textarea name="message" id="message" placeholder="Votre Message" class="contact_form_message" required></textarea>
					</div>
					<div class="contact_form_btn_block">
						<input type="submit" value="Envoyer" class="contact_form_bnt  contact_btn"/>
						<input type="reset" value="Tout Effacer" class="contact_form_bnt "/>
					</div>
				</form>
      </div>



Le code du fichier mailer.php



<?php

// Define some constants
define( "RECIPIENT_NAME", "Test" );
define( "RECIPIENT_EMAIL", "bla-bla-test@gmail.com" );
define( "EMAIL_SUBJECT", "Contact site" );

// Read the form values
$success = false;
$senderName = isset( $_POST['name'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['name'] ) : "";
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";

//Send Email
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, EMAIL_SUBJECT, $message, $headers );



Vous avez une idée ?
Modérateur
Bonjour,

Votre formulaire est censé faire quoi à la soumission ?! Indiquez-lui l'action à réaliser et tout ira mieux Smiley smile
<form name="contact_form" method="post" action="mailer.php" class="contact_form">

PS : Un name à la balise form ???
Le formulaire est censé m'envoyer un mail contenant les informations entrées par le visiteur de la page. ?
"PS : Un name à la balise form ???" un nom à la place de contact_form ?
Il me semblait bien qu'il manquait quelque chose :
Comment je lui indique l'action à réaliser ?
(Je débute c'est mon 1er formulaire)
Modérateur
J'ai l'impression d'un quiproquo. Pour l'action je vous ai indiqué ce à quoi ça devrait ressembler, il faut y indiquer le chemin du fichier chargé du traitement des données envoyées par le formulaire.
Ha ok. Merci, donc si je comprends bien je copie votre code, j'ajoute le nom et chemin du fichier qui doit traiter les données du formulaire ?
C'est bien ça ?
bill83 a écrit :
Ha ok. Merci, donc si je comprends bien je copie votre code, j'ajoute le nom et chemin du fichier qui doit traiter les données du formulaire ?
C'est bien ça ?


Oui
Merci beaucoup.
Au risque de paraître stupide, je colle ce morceau de code à quel endroit du formulaire ?
Modérateur
bill83 a écrit :

Au risque de paraître stupide...
C'est vrai que là... hi hi hi Smiley cligne
bill83 a écrit :
je colle ce morceau de code à quel endroit du formulaire ?
Dans votre code vous avez déjà une balise form, il vous suffit de la remplacer par celle proposée plus haut. Smiley smile
Coller à la place de la balise form c’est ce que j’ai fait hier soir sans aucun résultat, je me demandais donc simplement si je n’avait pas fait une erreur.
En tout cas avec cette solution cela ne fonctionne pas.
Modérateur
Est-ce que le formulaire et le fichier de traitement (mailer.php) se trouvent dans le même répertoire ?

Mais avant de pousser plus loin vers cette direction, il me traverse l'esprit l'idée selon laquelle vous n'auriez pas démarré de session. Raison pour laquelle rien ne semble fonctionner.

Votre fichier mailer.php (si aucun fichier php n'est exécuté avant celui-ci) doit commencé par ceci:
<?php
session_start();


Qu'en est-il ?
Le formulaire et le fichier php de traitement sont tous les deux à la racine du site donc je pense que c'est bon de côté là. J'ai ajouté le code démarrage de session de la façon suivante sans aucun résultat :

<?php

session_start();
// Define some constants
Modérateur
Quel retour écran avez-vous si dans le fichier mailer.php vous incluez ceci
<?php
session_start();
echo '<pre>'; print_r($_POST); echo '</pre>';
exit('Jusqu\'ici tout va bien !!!');


Est-ce que la phrase Jusqu'ici tout va bien ! s'affiche ?
Je viens d'essayer et je n'ai rien de plus que la phrase habituelle "votre message a été envoyé" qui provient d'un js.
Modérateur
bill83 a écrit :
Je viens d'essayer et je n'ai rien de plus que la phrase habituelle "votre message a été envoyé" qui provient d'un js.
Ha oui et cela vous n'en avez jamais parlé. Si vous avez un script JS qui intercepte le formulaire et s'occupe du traitement, ça change la donne et n'a plus rien à voir avec un problème en html ou en php.

C'est le problème quand on pompe du code tout de go sans en comprendre la substance. Pourtant ce n'est pas le nombre de tutoriel qui manque et de conseils en tout genre comme sur ce forum.

Je vous suggère donc de re-poster l'intégralité de vos pages afin d'avoir une vue complète sur votre code.

Smiley smile
Désolé je n'avais pas pensé au Js ! Voici le code :

// validate and process contact form
	$(".contact_btn").click(function() { 
		
		var name = $("input#name").val();  
		var email = $("input#email").val();
		var message = $("textarea#message").val(); 
		var dataString = 'name='+ name + '&email=' + email + '&message=' + message;
		
		//alert (dataString);//return false;  
		$.ajax({  
		  type: "POST",  
		  url: "mailer.php",  
		  data: dataString,  
		  success: function() { 
			$('.contact_form').html("<div class='contact_message text_color'>Formulaire envoyé ! Merci</div>");
			  
		  }
		});  
		return false;		
     
	});  
14 échanges pour dire à la fin "j'ai oublié un truc !! "
Smiley mur Smiley tronconne Smiley ripperwhore Smiley smash lol

Si dans ta requête ajax tu rajoute une variable de retour

success: function(result) {  //ici


Et que tu la console.log(), tu devrais voir le retour que Greg t'a fais rajouté.
Oui bon tout le monde a débuté un jour. Smiley biggrin
Le but n’est pas d’avoir le retour que Greg m’a fait ajouter, le but est de recevoir le mail contenant les informations du formulaire. Smiley cligne
Modifié par bill83 (13 Feb 2020 - 10:15)
Le but est tout d'abord de savoir si la communication se fait bien entre t'es deux fichiers... mais fait comme tu veux.
et donc dans ton retour ajax tu as quoi ? je parles pas de la page blanche je parle bien du résultat de ta fonction ajax dans le success.