|
 Posté le 26/05/2019 @ 11:14 |
| Bonjour à tous.
J'aurais besoin de votre savoir afin de résoudre un problème.
Je fais un site pour une amie avec un template que j'ai acheté. Il y a possibilité de prendre un rendez-vous via un formulaire
en page d'accueil. Hélas, cela me renvoie un message d'erreur! "There was a problem sending your message. Please try again."
Une âme charitable pourrait t'elle me venir en aide ?
Page de test: http://test.webandyou.ch/amalis-nails/index.html
Code PHP:
<?php
// Define some constants
define( "RECIPIENT_NAME", "YOUR_NAME_HERE" );
define( "RECIPIENT_EMAIL", "adresse@email.ch" );
define( "EMAIL_SUBJECT", "$subject" );
// Read the form values
$success = false;
$senderName = isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<html>
<head>
<title>Thanks!</title>
</head>
<body>
<?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
<?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?>
<p>Click your browser's Back button to return to the page.</p>
</body>
</html><?php
}
?>
Par avance merci de votre gentillesse.
|
|
|
|
|
|
Posté le 26/05/2019 à 12:11 |
Maître astucien | 
A première vue :
Ta page est en HTML et ton script est en... 
|
|
Posté le 26/05/2019 à 12:17 |
| Jean-Pierre a écrit :

A première vue :
Ta page est en HTML et ton script est en... 
Bonjour Jean-Pierre.
Oui, ma page est en HTML et fait appelle au fichier PHP ?????
Donc... ???
Ou serait l'erreur |
|
Posté le 26/05/2019 à 12:21 |
Maître astucien | Si ton script PHP est dans du HTML... 
Tente de renommer en PHP cette page  |
|
Posté le 26/05/2019 à 12:26 |
| Jean-Pierre a écrit :
Si ton script PHP est dans du HTML... 
Tente de renommer en PHP cette page 
?????????
Mon script PHP n'est pas dans le HTML. Dans le HTML il y a le formulaire qui fait
appel au fichier "book-appointment.php"
??????? |
|
Posté le 26/05/2019 à 12:31 |
Maître astucien | Renomme-moi cette fichue page HTML en PHP et dis-nous ensuite si ça marche mieux...
Arfff, tu vas finir par me faire douter ...  Modifié par Jean-Pierre le 26/05/2019 12:35 |
|
Posté le 26/05/2019 à 12:36 |
| Jean-Pierre a écrit :
Renomme-moi cette fichue page HTML en PHP et dis-nous ensuite si ça marche mieux...
Arfff, tu vas finir par me faire douter ... 
Après renommage de la page, même résultat et même message d'erreur !!! |
|
Posté le 26/05/2019 à 12:38 |
| Je connais pas grand chose au PHP mais pour moi l'erreur est dans le script PHP !
Mais ou ??? |
|
Posté le 26/05/2019 à 12:45 |
Maître astucien | Pour cela faudrait avoir clairement le code appelant HTML et celui en PHP.
Mais en testant, même avec une adresse email valide ça plante aussi ?
Sans oublier : define( "RECIPIENT_EMAIL", "adresse@email.ch" ); Modifié par Jean-Pierre le 26/05/2019 12:48 |
|
Posté le 26/05/2019 à 12:53 |
| Jean-Pierre a écrit :
Pour cela faudrait avoir clairement le code appelant HTML et celui en PHP.
Mais en testant, même avec une adresse email valide ça plante aussi ?
Le code PHP est dans mon premier message.
Le code HTML est le lien également dans mon premier message.
Mais les revoilà.
Code appellant dans le HTML:
<form class="book-app" action="php/book-appointment.php">
<h4>Rendez-vous</h4>
<div id="inlinedate"></div>
<div class="step2">
<input type="text" id="dateinput" />
<label>Heure</label>
<div class="custom-select">
<span class="fa fa-angle-down"></span>
<select>
<option value="8:00 - 9:00">8:00 - 9:00</option>
<option value="9:00 - 10:00">9:00 - 10:00</option>
<option value="10:00 - 11:00">10:00 - 11:00</option>
<option value="11:00 - 12:00">11:00 - 12:00</option>
<option value="12:00 - 13:00">12:00 - 13:00</option>
<option value="13:00 - 14:00">13:00 - 14:00</option>
<option value="14:00 - 15:00">14:00 - 15:00</option>
<option value="15:00 - 16:00am">15:00 - 16:00</option>
<option value="16:00 - 17:00">16:00 - 17:00</option>
<option value="17:00 - 18:00">17:00 - 18:00</option>
<!--<option value="6:00am - 7:00am">6:00am - 7:00am</option>
<option value="7:00am - 8:00am">7:00am - 8:00am</option>
<option value="8:00am - 9:00am">8:00am - 9:00am</option>
<option value="9:00am - 10:00am">9:00am - 10:00am</option>-->
</select>
</div>
<label>Email</label>
<input type="email" placeholder="Email">
<label>Téléphone</label>
<input type="text" placeholder="Téléphone">
<button type="submit" class="btn btn-primary btn-block text-center">Prendre rendez-vous</button>
</div>
</form>
Script PHP:
<?php
// Define some constants
define( "RECIPIENT_NAME", "YOUR_NAME_HERE" );
define( "RECIPIENT_EMAIL", "xxxxxx@xxxxxxxx.ch" );
define( "EMAIL_SUBJECT", "$subject" );
// Read the form values
$success = false;
$senderName = isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<html>
<head>
<title>Thanks!</title>
</head>
<body>
<?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
<?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?>
<p>Click your browser's Back button to return to the page.</p>
</body>
</html><?php
}
?>
Voilà, voilà... |
|
Posté le 26/05/2019 à 13:11 |
Maître astucien | Je viens de tester et en effet c'est pareil 
Je miserais sur la section : $headers qui me parait un peu légère.
Patience tu auras d'autres réponses  |
|
Posté le 26/05/2019 à 13:16 |
| Jean-Pierre a écrit :
Je viens de tester et en effet c'est pareil 
Je miserais sur la section : $headers qui me parait un peu légère.
Patience tu auras d'autres réponses 
Merci de ton aide.
Oui, j'espère que j'aurais d'autres réponses.
Merci d'avance à tous les autres.
C'est important pour moi  Modifié par mac_marco le 26/05/2019 13:29 |
|
Posté le 26/05/2019 à 14:00 |
Maître astucien | A mon avis doit manquer des trucs.
Par exemple les champs (en page HTML) se nommant :
senderName
senderEmail
message
etc.
Car lors de l'envoi ces données manquent à l'appel et par conséquent ça plante !
@ +
|
|
Posté le 26/05/2019 à 14:34 |
Maître astucien | Preuve qu'il manque des champs car si tu remplis les champs emails du code de testing ci-dessous (xxxxxxxxx@xx) tu verras que ça fonctionne bien et par conséquent tu recevras une réponse email à ce formulaire :
<?php
// Define some constants
define( "RECIPIENT_NAME", "Super Limace" );
define( "RECIPIENT_EMAIL", "xxxxxxxxx@xxxxxxxx.fr" );
define( "EMAIL_SUBJECT", "My subject" );
// Read the form values
$success = false;
$senderName = "Super Limace"; //isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = "xxxxxxxx@fxxxxxxx.fr"; //isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = "Quel sujet ?"; //isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = "Niet message, car manque des champs de saisies !"; //isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
echo '<br />'; echo RECIPIENT_NAME; echo '<br />'; echo RECIPIENT_EMAIL; echo '<br />'; echo EMAIL_SUBJECT;
echo $senderName;
echo '<br />';
echo $recipient;
echo '<br />';
echo $subject;
echo '<br />';
echo $message;
echo '<br />';
echo $senderEmail;
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
<?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>"?>
<p>Click your browser's Back button to return to the page.</p>
</body>
</html><?php
}
?>
Modifié par Jean-Pierre le 26/05/2019 14:36 |
|
Posté le 26/05/2019 à 15:22 |
| Merci ! On avance !
Je reçois le mail Mais vide ! Ou presque !
Je ne reçois que ces deux lignes !
La première comme objet du message et la deuxième dans le texte du message !
Je ne reçois pas la date et l'heure sélectionnées dans le formulaire !
Voilà le code:
<?php
// Define some constants
define( "RECIPIENT_NAME", "Amalis Nails" );
define( "RECIPIENT_EMAIL", "xxxxxxxx@xxxxxxx.ch" );
define( "EMAIL_SUBJECT", "Mon sujet" );
// Read the form values
$success = false;
$senderName = "Amalis Nails"; isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = "xxxxxxxxx@xxxxxxx.ch"; isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = "Mon sujet"; isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = "Merci"; isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<html>
<head>
<title>Thanks!</title>
</head>
<body>
<?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
<?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>" ?>
<p>Click your browser's Back button to return to the page.</p>
</body>
</html><?php
}
?>
Voilà, voilà... Modifié par mac_marco le 26/05/2019 15:29 |
|
Posté le 26/05/2019 à 17:25 |
Maître astucien | Oui le mail part mais pas avec tout ce qu'il faudrait.
Tu as viré les "commentaires" sur mes modifs --> // mais le résultat est/serait identique. C'était surtout pour les besoins de la démo.
C'est à ces endroits que j'ai "chargé" (pour démo) les variables dont il manque les champs...
De toute façon te manque du code comme dit précédemment.
On peut toujours "broder" autour, mais pourquoi réinventer la roue 
JP
Modifié par Jean-Pierre le 26/05/2019 17:28 |
|
Posté le 26/05/2019 à 17:33 |
| Jean-Pierre a écrit :
Oui le mail part mais pas avec tout ce qu'il faudrait.
Tu as viré les "commentaires" sur mes modifs --> // mais le résultat est/serait identique. C'était surtout pour les besoins de la démo.
C'est à ces endroits que j'ai "chargé" (pour démo) les variables dont il manque les champs...
De toute façon te manque du code comme dit précédemment.
On peut toujours "broder" autour, mais pourquoi réinventer la roue 
JP
Oui, tu as surement raison !
Je laisse tomber, suis pas au point avec le PHP.
Merci beaucoup pour ton temps  |
|
Posté le 26/05/2019 à 17:42 |
Maître astucien | Tu laisses peut-être tomber, mais tu as payé pour un template incomplet l 
|
|
Posté le 26/05/2019 à 17:45 |
| Jean-Pierre a écrit :
Tu laisses peut-être tomber, mais tu as payé pour un template incomplet l 
C'est les risques !
Et le montant investit vaut bien le reste qui fonctionne correctement.
Support technique en anglais et je ne parle pas l'anglais  |
|
Posté le 26/05/2019 à 19:21 |
Maître astucien | 
Pour faire avancer le chimililibic :
Page HTML :
<form method="POST" action="php/book-appointment.php" name="Contact" class="book-app">
<h4>Rendez-vous</h4>
<div id="inlinedate"></div>
<div class="step2">
<input type="text" id="dateinput" />
<label>Heure</label>
<div class="custom-select">
<span class="fa fa-angle-down"></span>
<select name="rdv" id="input_rdv"> <option value="8:00 - 9:00">8:00 - 9:00</option> <option value="9:00 - 10:00">9:00 - 10:00</option> <option value="10:00 - 11:00">10:00 - 11:00</option> <option value="11:00 - 12:00">11:00 - 12:00</option> <option value="12:00 - 13:00">12:00 - 13:00</option> <option value="13:00 - 14:00">13:00 - 14:00</option> <option value="14:00 - 15:00">14:00 - 15:00</option> <option value="15:00 - 16:00">15:00 - 16:00</option> <option value="16:00 - 17:00">16:00 - 17:00</option> <option value="17:00 - 18:00">17:00 - 18:00</option> </select>
<input type="email" placeholder="Email">
<label>Téléphone</label>
<input type="text" name="senderPhone" placeholder="Phone"><br /> <input type="text" name="senderName" placeholder="Name"><br />
<button type="submit" class="btn btn-primary btn-block text-center">Prendre rendez-vous</button>
</div>
</form>
</body> </html>
Ensuite la page PHP :
<?php
// Define some constants
define( "RECIPIENT_NAME", "Super Limace" );
define( "RECIPIENT_EMAIL", "xxxxxxxxxxxcoct@lalifolle.com" );
define( "EMAIL_SUBJECT", "My subject" );
// Read the form values
$success = false;
$senderName = "Pipo le Toto"; //isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = "xxxxxx@xxxxxxxxxxxxxee.fr"; //isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = "Quel sujet ?"; //isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = "Voici votre nouveau rendrez-vous :"; //isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : ""; $message.= "\r\n"; $message.= $_POST['senderPhone']."\r\n"; $message.= $_POST['senderName']."\r\n"; $message.= $_POST['rdv']."\r\n";
echo '<br />'; echo RECIPIENT_NAME; echo '<br />'; echo RECIPIENT_EMAIL; echo '<br />'; echo EMAIL_SUBJECT; echo '<br />';
echo 'Donnée rdv : ' .$_POST['rdv']; echo '<br />'; echo 'Donnée senderPhone : ' .$_POST['senderPhone']; echo '<br />'; echo 'Donnée senderName : ' .$_POST['senderName'];
echo '<br />';
echo $senderName;
echo '<br />';
echo $recipient;
echo '<br />';
echo $subject;
echo '<br />';
echo $message;
echo '<br />';
echo $senderEmail;
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<?php if ( $success ) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?>
<?php if ( !$success ) echo "<p>There was a problem sending your message. Please try again.</p>"?>
<p>Click your browser's Back button to return to the page.</p>
</body>
</html><?php
}
?>
Aucune prétention que tout soit nickel, mais c'est simplement pour faire avancer le chimili... 
Encore du temps à passer...
JP
|
|
Posté le 26/05/2019 à 19:28 |
|
Aucune prétention que tout soit nickel, mais c'est simplement pour faire avancer le chimili... 
Encore du temps à passer...
Je vais essayer ton code dès que possible et te tiendrais au courant.
Mais là, j'arrête ! ça fait depuis sept heures ce matin que j'y suis non-stop 
et ma chère et tendre épouse commence à ce demander si je suis à la maison .
Merci beaucoup  |
|
Posté le 26/05/2019 à 19:33 |
Maître astucien | Le code ça dévore plus que les femmes : la preuve 
Et pourtant on les aime !
Mesdames ne lisez pas ça...  |
|
Posté le 26/05/2019 à 19:38 |
| Oh oui on les aime.
Bonne soirée  |
|
Posté le 26/05/2019 à 19:58 |
| Salut,
Tu as lu ton code au moins ? Tes preg_replace vident les variables $senderName et $senderEmail... Du coup, ça donne un entête From: <>
C'est pas prêt de fonctionner dans cet état. L'entête From: doit être du type @domaine_du_site, donc From: X@webandyou.ch
Libre à toi de joindre dans le mail le nom et l'adresse mail de la personne qui écrit.
En plus, ton domaine a un enregistrement MX, mais pas d'enregistrement SPF. Et encore, un reverse de ton domaine conduit à neptun.kreativmedia.ch Et pour finir, tu n'as même pas de captcha pour t'assurer qu'aucun robot ne poste du spam.
Du coup, c'est pas plus mal si ça ne marche pas...
Juste une question en passant, c'est un hébergement perso à la maison ou chez un hébergeur ? Si c'est du perso sur ton Windows, il ne faut pas oublier d'installer sendmail. Windows ne contient aucun serveur mail !
|
|
Posté le 27/05/2019 à 06:18 |
| zoulouman a écrit :
Salut,
Tu as lu ton code au moins ? Tes preg_replace vident les variables $senderName et $senderEmail... Du coup, ça donne un entête From: <>
C'est pas prêt de fonctionner dans cet état. L'entête From: doit être du type @domaine_du_site, donc From: X@webandyou.ch
Libre à toi de joindre dans le mail le nom et l'adresse mail de la personne qui écrit.
En plus, ton domaine a un enregistrement MX, mais pas d'enregistrement SPF. Et encore, un reverse de ton domaine conduit à neptun.kreativmedia.ch Et pour finir, tu n'as même pas de captcha pour t'assurer qu'aucun robot ne poste du spam.
Du coup, c'est pas plus mal si ça ne marche pas...
Juste une question en passant, c'est un hébergement perso à la maison ou chez un hébergeur ? Si c'est du perso sur ton Windows, il ne faut pas oublier d'installer sendmail. Windows ne contient aucun serveur mail !
Bonjour Zoulouman.
Oui, j'ai lu mon code mais je ne connais rien en PHP. D'ou ma question sur ce forum.
Un enregistrement MX ou SPF c'est quoi ? J'apprend gentiment .
J'ai un hébergement chez un hébergeur. |
|
Posté le 27/05/2019 à 10:58 |
Maître astucien | 
Ceci dit ma rectif provisoire (à l'arrache) du code ci-dessus fonctionne parfaitement 
J'attire l'attention de ma grosse grenouille verte préférée sur le fait que l'entête From est correcte, extrait du code en réception de ce formulaire (suivant code brut dito) :
.../... From: Pipo le Toto <xxxxxxxxxx@free.fr> X-GND-Status: LEGIT .../...
Idem je donne ici le résultat de ce message de test (tel. bidon hein) :
Voici votre nouveau rendrez-vous : 01 35 98 56 80 M. Ernert 17:00 - 18:00
Grenouille verte, alors qu'en penses-tu ? 
Quelle serait concrètement et simplement ta pierre "code" à l'édifice ?
Oui j'ai court-circuité les preg_replace 
|
|
|
|
|
|