Réception des données PHP avec certains navigateurs
agencesyscom
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
agencesyscom Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
agencesyscom Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai mis en place un site Internet (pour une exposition photographique) hébergé chez free, et j'utilise un formulaire de contact tout simple. Celui-ci fonctionne avec un script PHP qui ne m'a jamais posé de souci jusqu'ici. Or, j'ai constaté dernièrement que les informations arrivaient bien dans ma messagerie lorsque j'utilise Internet Explorer ou Safari pour remplir le formulaire, mais pas avec Chrome ou encore depuis un Smartphone. Le problème, c'est que lorsque l'on remplie le formulaire, tout est normal pour l'internaute, y compris au moment de l'envoi, mais de mon côté je ne reçois rien. J'espère être clair dans mes propos... J'avoue ne pas savoir d'où vient le problème, il y a certes un JAVASCRIPT qui permet de contrôler que les champs soient bien remplis, mais je ne pense pas que le problème vienne de là. Quelqu'un aurait-il une idée ???
D'avance merci
HTML :
<form id="formulaire" name="formulaire" method="post" action="contact.php" onSubmit="return
verif_formulaire()">
Nom :<input name="nom" type="text" id="nom" size="40" />
Prénom : <input name="prenom" type="text" id="prenom" size="40" />
Organisme ou entreprise :<input name="organisme" type="text" id="organisme" size="40" />
Email : <input name="email" type="text" id="email" size="40" />
Téléphone : <input name="tel" type="text" id="tel" size="40" maxlength="16" />
Message :<textarea name="message" cols="55" rows="12" id="message"></textarea>
<input type="image" name="imageField" id="imageField" src="img-contact/btn-envoyer.png" />
</form>
PHP :
<?php
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$organisme=$_POST['organisme'];
$email=$_POST['email'];
$tel=$_POST['tel'];
$message=$_POST['message'];
$headers ='From: "Site Internet"<'.$email.'>'."\n";
$headers .='Return-Path: moi@gmail.com'."\n";
$headers .='Cc: < moi@wanadoo.fr>'."\n";
$headers .='Reply-To: <'.$email.'>'."\n";
$headers .='Content-Type: text/plain; charset=utf-8'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$sujet="EXPOSITION - CONTACT";
$msg="UN CONTACT EST ARRIVE \n
Nom : $nom \n
Prenom : $prenom \n
Organisme : $organisme \n
Email : $email \n
Telephone : $tel \n
Message : $message";
if(mail('moi@gmail.com', $sujet, $msg, $headers))
{
echo 'VOTRE MESSAGE A BIEN ETE ENVOYE';
}
else
{
echo 'ECHEC LORS DE L ENVOI DE VOTRE MESSAGE';
J'ai mis en place un site Internet (pour une exposition photographique) hébergé chez free, et j'utilise un formulaire de contact tout simple. Celui-ci fonctionne avec un script PHP qui ne m'a jamais posé de souci jusqu'ici. Or, j'ai constaté dernièrement que les informations arrivaient bien dans ma messagerie lorsque j'utilise Internet Explorer ou Safari pour remplir le formulaire, mais pas avec Chrome ou encore depuis un Smartphone. Le problème, c'est que lorsque l'on remplie le formulaire, tout est normal pour l'internaute, y compris au moment de l'envoi, mais de mon côté je ne reçois rien. J'espère être clair dans mes propos... J'avoue ne pas savoir d'où vient le problème, il y a certes un JAVASCRIPT qui permet de contrôler que les champs soient bien remplis, mais je ne pense pas que le problème vienne de là. Quelqu'un aurait-il une idée ???
D'avance merci
HTML :
<form id="formulaire" name="formulaire" method="post" action="contact.php" onSubmit="return
verif_formulaire()">
Nom :<input name="nom" type="text" id="nom" size="40" />
Prénom : <input name="prenom" type="text" id="prenom" size="40" />
Organisme ou entreprise :<input name="organisme" type="text" id="organisme" size="40" />
Email : <input name="email" type="text" id="email" size="40" />
Téléphone : <input name="tel" type="text" id="tel" size="40" maxlength="16" />
Message :<textarea name="message" cols="55" rows="12" id="message"></textarea>
<input type="image" name="imageField" id="imageField" src="img-contact/btn-envoyer.png" />
</form>
PHP :
<?php
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$organisme=$_POST['organisme'];
$email=$_POST['email'];
$tel=$_POST['tel'];
$message=$_POST['message'];
$headers ='From: "Site Internet"<'.$email.'>'."\n";
$headers .='Return-Path: moi@gmail.com'."\n";
$headers .='Cc: < moi@wanadoo.fr>'."\n";
$headers .='Reply-To: <'.$email.'>'."\n";
$headers .='Content-Type: text/plain; charset=utf-8'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$sujet="EXPOSITION - CONTACT";
$msg="UN CONTACT EST ARRIVE \n
Nom : $nom \n
Prenom : $prenom \n
Organisme : $organisme \n
Email : $email \n
Telephone : $tel \n
Message : $message";
if(mail('moi@gmail.com', $sujet, $msg, $headers))
{
echo 'VOTRE MESSAGE A BIEN ETE ENVOYE';
}
else
{
echo 'ECHEC LORS DE L ENVOI DE VOTRE MESSAGE';
A voir également:
- Réception des données PHP avec certains navigateurs
- Fuite données maif - Guide
- Accusé de reception gmail - Guide
- Supprimer les données de navigation - Guide
- Problème de réception tv pas de signal aujourd' hui - Guide
- Trier des données excel - Guide
18 réponses
Bonjour,
Il ne devrait pas y avoir de différence entre Safari et Chrome lors de l'exécution du Javascript. Si l'utilisateur reçoit bien une confirmation que l'envoi a été faite, il faut peut être vérifier au niveau des spams de la boite de réception.
Sinon, pour vérifier s'il y a bien une erreur lié au javascript sous Chrome, il suffit d'activer les Outils de développement > Onglet Console. Si une erreur est détectée elle y sera listée.
Pour les activer : Ctrl + Maj + i sur Windows / Ctrl + Alt + i sur Mac
Il ne devrait pas y avoir de différence entre Safari et Chrome lors de l'exécution du Javascript. Si l'utilisateur reçoit bien une confirmation que l'envoi a été faite, il faut peut être vérifier au niveau des spams de la boite de réception.
Sinon, pour vérifier s'il y a bien une erreur lié au javascript sous Chrome, il suffit d'activer les Outils de développement > Onglet Console. Si une erreur est détectée elle y sera listée.
Pour les activer : Ctrl + Maj + i sur Windows / Ctrl + Alt + i sur Mac
Salut,
il nous manque un élément pour te répondre, et c'est lui à mon avis qui cause un soucis : le contenu de la fonction javascript verif_formulaire
le code php sera toujours interprété de la même manière, quelle que soit le navigateur étant donné que le code php est exécuté côté serveur, et que lui ne change pas.
Donc le soucis se situe à mon avis du côté du javascript.
Tu peux ouvrir la console javascript sur chrome pour voir s'il y a un problème (ctrl+shift+i) et essayer d'envoyer un message.
il nous manque un élément pour te répondre, et c'est lui à mon avis qui cause un soucis : le contenu de la fonction javascript verif_formulaire
le code php sera toujours interprété de la même manière, quelle que soit le navigateur étant donné que le code php est exécuté côté serveur, et que lui ne change pas.
Donc le soucis se situe à mon avis du côté du javascript.
Tu peux ouvrir la console javascript sur chrome pour voir s'il y a un problème (ctrl+shift+i) et essayer d'envoyer un message.
voici le javascript de vérification du formulaire intégré dans l'entête de la page Html
<script type="text/javascript">
<!--
function verif_formulaire()
{
if(document.formulaire.nom.value == "") {
alert("Veuillez entrer votre nom!");
document.formulaire.nom.focus();
return false;
}
if(document.formulaire.prenom.value == "") {
alert("Veuillez entrer votre prénom!");
document.formulaire.prenom.focus();
return false;
}
if(document.formulaire.email.value == "") {
alert("Veuillez entrer votre adresse électronique!");
document.formulaire.email.focus();
return false;
}
if(document.formulaire.email.value.indexOf('@') == -1) {
alert("Ce n'est pas une adresse électronique!");
document.formulaire.email.focus();
return false;
}
if(document.formulaire.tel.value == "") {
alert("Veuillez entrer votre téléphone!");
document.formulaire.tel.focus();
return false;
}
if(document.formulaire.message.value == "") {
alert("Veuillez entrer votre message!");
document.formulaire.message.focus();
return false;
}
}
//-->
</script>
<script type="text/javascript">
<!--
function verif_formulaire()
{
if(document.formulaire.nom.value == "") {
alert("Veuillez entrer votre nom!");
document.formulaire.nom.focus();
return false;
}
if(document.formulaire.prenom.value == "") {
alert("Veuillez entrer votre prénom!");
document.formulaire.prenom.focus();
return false;
}
if(document.formulaire.email.value == "") {
alert("Veuillez entrer votre adresse électronique!");
document.formulaire.email.focus();
return false;
}
if(document.formulaire.email.value.indexOf('@') == -1) {
alert("Ce n'est pas une adresse électronique!");
document.formulaire.email.focus();
return false;
}
if(document.formulaire.tel.value == "") {
alert("Veuillez entrer votre téléphone!");
document.formulaire.tel.focus();
return false;
}
if(document.formulaire.message.value == "") {
alert("Veuillez entrer votre message!");
document.formulaire.message.focus();
return false;
}
}
//-->
</script>
Aucune erreur n'est indiquée dans l'onglet Console, celui-ci est vide (que ce soit sur la page Html que la page PHP)
Merci de votre aide
Bonne soirée
Merci de votre aide
Bonne soirée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, visiblement il ne manque rien.
Même en retirant le javascript de vérification, le résultat est le même. Franchement, je cale un peu...
Même en retirant le javascript de vérification, le résultat est le même. Franchement, je cale un peu...
Bonjour
Juste une idée en passant par là : ça ne pourrait pas venir d'ailleurs que du <form> lui même ? Par exemple une balise mal formée avant, ou qui n'est jamais refermée... et qui fait que formulaire est plus ou moins bien pris en compte selon les navigateurs ?
Et quand tu dis que tout est normal pour l'internaute, est-ce que ça veut dire qu'il voit 'VOTRE MESSAGE A BIEN ETE ENVOYE' ?
Juste une idée en passant par là : ça ne pourrait pas venir d'ailleurs que du <form> lui même ? Par exemple une balise mal formée avant, ou qui n'est jamais refermée... et qui fait que formulaire est plus ou moins bien pris en compte selon les navigateurs ?
Et quand tu dis que tout est normal pour l'internaute, est-ce que ça veut dire qu'il voit 'VOTRE MESSAGE A BIEN ETE ENVOYE' ?
Exact, il voit bien le message "Votre message a bien été envoyé". Concernant la balise, je ne vois pas trop...
Merci
Merci
si l'internaute voit le message 'VOTRE MESSAGE A BIEN ETE ENVOYE'
c'est que le formulaire est bien envoyé au serveur et que le script contact.php d'envoi du mail s'exécute donc il ne faut pas chercher côté fonction javascript elle n'est plus concerné à ce moment là
essayes de mettre un echo pour voir le contenu du mail qui devrait être envoyé:
c'est que le formulaire est bien envoyé au serveur et que le script contact.php d'envoi du mail s'exécute donc il ne faut pas chercher côté fonction javascript elle n'est plus concerné à ce moment là
essayes de mettre un echo pour voir le contenu du mail qui devrait être envoyé:
<?php $nom=$_POST['nom']; $prenom=$_POST['prenom']; $organisme=$_POST['organisme']; $email=$_POST['email']; $tel=$_POST['tel']; $message=$_POST['message']; $headers ='From: "Site Internet"<'.$email.'>'."\n"; $headers .='Return-Path: moi@gmail.com'."\n"; $headers .='Cc: < moi@wanadoo.fr>'."\n"; $headers .='Reply-To: <'.$email.'>'."\n"; $headers .='Content-Type: text/plain; charset=utf-8'."\n"; $headers .='Content-Transfer-Encoding: 8bit'; $sujet="EXPOSITION - CONTACT"; $msg="UN CONTACT EST ARRIVE \n Nom : $nom \n Prenom : $prenom \n Organisme : $organisme \n Email : $email \n Telephone : $tel \n Message : $message"; //TEST les sauts de lignes \n ne seront pas pris en compte mais ça te donnera au moins les valeurs echo "header:".$headers; echo "<br />Message:<br />".$msg; /// if(mail('moi@gmail.com', $sujet, $msg, $headers)) { echo 'VOTRE MESSAGE A BIEN ETE ENVOYE'; } else { echo 'ECHEC LORS DE L ENVOI DE VOTRE MESSAGE'; }
Bonjour Alain_42, pour faire suite à ton aide, voici le résultat en ajoutant tes lignes de code :
header:From: "Site 4 saisons au PNFO" Return-Path: sitesyscom10@gmail.com Cc: Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit
Message:
UN CONTACT EST ARRIVE Nom : Dupont Prenom : Gérard Organisme : Paris Email : moi@wanadoo.fr Telephone : 0326565898 Message : essai de message avec ChromeVOTRE MESSAGE A BIEN ETE ENVOYE
Tout à l'air normal, mais je ne reçois toujours pas le message dans ma boîte mail...
Merci de ton aide
header:From: "Site 4 saisons au PNFO" Return-Path: sitesyscom10@gmail.com Cc: Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit
Message:
UN CONTACT EST ARRIVE Nom : Dupont Prenom : Gérard Organisme : Paris Email : moi@wanadoo.fr Telephone : 0326565898 Message : essai de message avec ChromeVOTRE MESSAGE A BIEN ETE ENVOYE
Tout à l'air normal, mais je ne reçois toujours pas le message dans ma boîte mail...
Merci de ton aide
oui mais je pense qu'il faudrait que tu modifies le FROM
avec comme valeur pour $ton_email, le mail connu de ton hebergeur
par ex webmaster@ton_site.com
$headers ='From: "Site Internet"<'.$ton_email.'>'."\n";
avec comme valeur pour $ton_email, le mail connu de ton hebergeur
par ex webmaster@ton_site.com
Après corrections, voici le résultat de l'echo, mais toujours aucune réception...
header:From: "Site 4 saisons au PNFO"<4.saisons.pnfo@free.fr> Return-Path: sitesyscom10@gmail.com Cc: Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit
Message:
UN CONTACT EST ARRIVE Nom : Dupont Prenom : Martin Organisme : SYSCOM Email : moi@wanadoo.fr Telephone : 0326565898 Message : nouvel essai avec chromeVOTRE MESSAGE A BIEN ETE ENVOYE
En revanche, l'intégration des deux lignes de codes suivantes ont fait planter le serveur (ou le script PHP...)
echo "header:".htmspecialchars($headers);
echo "<br />Message:<br />".htmspecialchars($msg);
Merci de votre aide en tout cas.
header:From: "Site 4 saisons au PNFO"<4.saisons.pnfo@free.fr> Return-Path: sitesyscom10@gmail.com Cc: Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit
Message:
UN CONTACT EST ARRIVE Nom : Dupont Prenom : Martin Organisme : SYSCOM Email : moi@wanadoo.fr Telephone : 0326565898 Message : nouvel essai avec chromeVOTRE MESSAGE A BIEN ETE ENVOYE
En revanche, l'intégration des deux lignes de codes suivantes ont fait planter le serveur (ou le script PHP...)
echo "header:".htmspecialchars($headers);
echo "<br />Message:<br />".htmspecialchars($msg);
Merci de votre aide en tout cas.
C'était htmlspecialchars ! Pardon. Et même pour plus de clarté :
Je vois que les champs CC et Reply-To sont vides, tu pourras essayer de les retirer pour voir si ça passe mieux
echo "header:".nl2br(htmlspecialchars($headers)); echo "<br />Message:<br />".nl2br(htmlspecialchars($msg));
Je vois que les champs CC et Reply-To sont vides, tu pourras essayer de les retirer pour voir si ça passe mieux
ça y est ça fonctionne !!!!
Ce qui bloqué, c'était le champs CC du $headers. En le supprimant, ça passe tout à fait.
Est-ce qu'il y a une autre possibilité pour mettre en copie un formulaire que de passer par le CC dans Headers ???
En tout cas, merci beaucoup pour votre aide
Ce qui bloqué, c'était le champs CC du $headers. En le supprimant, ça passe tout à fait.
Est-ce qu'il y a une autre possibilité pour mettre en copie un formulaire que de passer par le CC dans Headers ???
En tout cas, merci beaucoup pour votre aide
J'ai parlé un peu vite, ça fonctionne avec Chrome, mais plus avec IE !!!!
En fait, ce sont les symboles "\r\n" qui fonctionne sous chrome et qui font planter IE. Si je remets "\n", tout refonctionne parfaitement sous IE et plus sous Chrome.
Peut-être existe-t-il une astuce ?
Désolé pour mon enthousiasme un peu rapide
En fait, ce sont les symboles "\r\n" qui fonctionne sous chrome et qui font planter IE. Si je remets "\n", tout refonctionne parfaitement sous IE et plus sous Chrome.
Peut-être existe-t-il une astuce ?
Désolé pour mon enthousiasme un peu rapide
Normalement, le Cc marche. Je ne sais pas si c'est normal d'avoir un espace entre le < et l'adresse, et je pense d'ailleurs que les < > ne sont pas utile si tu n'as que l'adresse mail (sans nom)
As-tu essayé :
As-tu essayé :
$headers .='Cc: moi@wanadoo.fr'."\n";