problème de mail incomplet

ladylou

New Member
#1
Bonjour à tous,

J'ignore si je trouverai ma réponse ici et si le problème concerne l'hébergement mais je me lance sait-on jamais...
Cela fait plusieurs jours que je reçois des mails (via le formulaire de contact de mon site) qui sont incomplets. Je m'explique : le champs du nom et de l'adresse mails sont bien remplies et les informations me parviennent bien, par contre le champs du message reste vide... rien, pas une lettre ni une ponctuation...au début je pensais que cela était une mauvaise manipulation de mes visiteurs (bien qu'en principe un champs incomplet ne fait pas partir le message...) et puis comme cela s'est répété plusieurs fois, j'ai commencé à chercher d'où pouvait venir le problème sachant que je n'ai rien changé au fichier php ni au fichier html concernant ce formulaire.
J'ai donc commencé par m'envoyer quelques messages (via le formulaire de contact de mon site) certains me sont arrivés et d'autre non...jusqu'à ce que je m'aperçoive que tous les messages contenant un "ç" m'arrivaient vierge....le problème viendrait donc de cette lettre ou plus exactement du cedille puisque les autres messages (contenant un c) arrivent intacts. est ce que quelqu'un pourrait me donner un petit tuyaux pour me dire d'où vient le problème subitement (cela fait deux ans que j'utilisais mon formulaire sans ,aucun problème ). Merci d'avance de votre aide.
 

lxwfr

New Member
#2
Bonjour à tous,

J'ignore si je trouverai ma réponse ici et si le problème concerne l'hébergement mais je me lance sait-on jamais...
Cela fait plusieurs jours que je reçois des mails (via le formulaire de contact de mon site) qui sont incomplets. Je m'explique : le champs du nom et de l'adresse mails sont bien remplies et les informations me parviennent bien, par contre le champs du message reste vide... rien, pas une lettre ni une ponctuation...au début je pensais que cela était une mauvaise manipulation de mes visiteurs (bien qu'en principe un champs incomplet ne fait pas partir le message...) et puis comme cela s'est répété plusieurs fois, j'ai commencé à chercher d'où pouvait venir le problème sachant que je n'ai rien changé au fichier php ni au fichier html concernant ce formulaire.
J'ai donc commencé par m'envoyer quelques messages (via le formulaire de contact de mon site) certains me sont arrivés et d'autre non...jusqu'à ce que je m'aperçoive que tous les messages contenant un "ç" m'arrivaient vierge....le problème viendrait donc de cette lettre ou plus exactement du cedille puisque les autres messages (contenant un c) arrivent intacts. est ce que quelqu'un pourrait me donner un petit tuyaux pour me dire d'où vient le problème subitement (cela fait deux ans que j'utilisais mon formulaire sans ,aucun problème ). Merci d'avance de votre aide.
vous avez le script php?
vous pouvez les remplacer le "ç" en code HEX html en utilisant la function st_replace($string) ou tous simplement htmlentries($string) en UTF-8
 

ladylou

New Member
#3
Merci de votre intervention et de votre aide. Le code php est sans doute dépassé mais c'est le seul que j'ai compris lorsque j'ai fait mon site...et encore, il y a des points que je ne maitrise pas dans ce code, j'ai essayé de modifier charset=utf-8 mais dans ce cas je ne reçois plus du tout les mails.
Voici le code, merci de votre tolérance je ne suis pas une pro.

<?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 omis de préciser 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 semble incorrect ou incomplet</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>Quel est votre message ?</p>';
}
}

if (!isset($_POST['captcha'])) {
$nombreErreur++;
$erreur6 = '<p>Il y a un problème avec la variable "captcha".</p>';
} else {
if ($_POST['captcha']!=chat) {
$nombreErreur++;
$erreur7 = '<p>Désolé, la réponse n\'est pas correcte.</p>';
}
}

if ($nombreErreur==0) { // S'il n'y a pas d'erreur
// 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']);
$chats = htmlentities($_POST['chats']);
$message = htmlentities($_POST['message']);

// Variables concernant l'email
$destinataire = 'monadresse@gmail.com'; // Adresse email du webmaster
$sujet = 'Titre du message'; // Titre de l'email
$contenu = '<html><head><title>Titre du message</title></head><body>';
$contenu .= '<p>Bonjour, un message vous a été envoyé à partir du formulaire de contact de votre site.</p>';
$contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
$contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
$contenu .= '<p><strong>Chats</strong>: '.$chats.'</p>';
$contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
$contenu .= '</body></html>'; // Contenu du message de l'email


// 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";

@mail($destinataire, $sujet, $contenu, $headers); // Fonction principale qui envoi l'email

header("Location: pagederemerciements.html"); // Afficher un message pour indiquer que le message a été envoyé
} else { // S'il y a au moins une erreur
echo '<div style="border:1px solid #ff0000; padding:5px;">';
echo '<p style="color:#ff0000;">Désolé, il y a '.$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>';
if (isset($erreur6)) echo '<p>'.$erreur6.'</p>';
if (isset($erreur7)) echo '<p>'.$erreur7.'</p>';
echo '</div><p><a href="http://www.pensionchatdu83.fr/photo.html">Réessayez</a></p>';
}
}
?>
 

lxwfr

New Member
#4
Merci de votre intervention et de votre aide. Le code php est sans doute dépassé mais c'est le seul que j'ai compris lorsque j'ai fait mon site...et encore, il y a des points que je ne maitrise pas dans ce code, j'ai essayé de modifier charset=utf-8 mais dans ce cas je ne reçois plus du tout les mails.
Voici le code, merci de votre tolérance je ne suis pas une pro.
Il a des docs pour comprendre tous, si vous avez envie d'apprendre sur php.net...



Pas testé je fais vite fait, pas assez le temps pour gérer mes site et famille "comme tous le monde", désoler
<?php
// S'il y des données de postées
if ($_SERVER['REQUEST_METHOD']=='POST') {//<--bizarre je n'est utilise pas avant
/*****************
Plutôt du genre quand il click sur le bouton valider

********************/
// 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 omis de préciser 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 semble incorrect ou incomplet</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>Quel est votre message ?</p>';
}
}

if (!isset($_POST['captcha'])) {
$nombreErreur++;
$erreur6 = '<p>Il y a un problème avec la variable "captcha".</p>';
} else {
if ($_POST['captcha']!=chat) {
$nombreErreur++;
$erreur7 = '<p>Désolé, la réponse n\'est pas correcte.</p>';
}
}
/********************************
moi je pense à
if(!empty($_POST['....'])) { $erreur = 'erreur, blabla'; }
dans vos code html utilisé <input placeholder="vous avez oublié(e)s ..." ..etc.... />

************************************/

//if ($nombreErreur==0) { // S'il n'y a pas d'erreur, déplacer
// 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']);
$chats = htmlentities($_POST['chats']);
$message = htmlentities($_POST['message']);

// Variables concernant l'email
$destinataire_nom = 'name websmaster'; // Le nom du webmaster<= manque peut-être
$destinataire = 'monadresse@gmail.com'; // Adresse email du webmaster
$sujet = 'Titre du message'; // Titre de l'email
$contenu = '<html><head><title>Titre du message</title></head><body>';
$contenu .= '<p>Bonjour, un message vous a été envoyé à partir du formulaire de contact de votre site.</p>';
$contenu .= '<p><strong>Nom</strong>: '.$nom.'</p>';
$contenu .= '<p><strong>Email</strong>: '.$email.'</p>';
$contenu .= '<p><strong>Chats</strong>: '.$chats.'</p>';
$contenu .= '<p><strong>Message</strong>: '.$message.'</p>';
$contenu .= '</body></html>'; // Contenu du message de l'email


// 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=utf8'."\r\n";
$headers .= "From: $destinataire_nom <$destinataire>\r\nReply-to : $nom <$mail>\nX-Mailer:pHP";//<= manque peut-être

if (mail($destinataire,$subject,$body,$headers)) && ($nombreErreur == 0) {
header("Location: pagederemerciements.html"); // Afficher un message pour indiquer que le message a été envoyé
} else {
echo '<div style="border:1px solid #ff0000; padding:5px;">
<p style="color:#ff0000;">Désolé, il y a '.$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>';
if (isset($erreur6)) echo '<p>'.$erreur6.'</p>';
if (isset($erreur7)) echo '<p>'.$erreur7.'</p>';

echo '</div><p><a href="http://www.pensionchatdu83.fr/photo.html">Réessayez</a></p>';
}




/***********************Déplacer******************************
if ($nombreErreur == 0) { // S'il n'y a pas d'erreur
//@mail($destinataire, $sujet, $contenu, $headers); // Fonction principale qui envoi l'email
//header("Location: pagederemerciements.html"); // Afficher un message pour indiquer que le message a été envoyé
} else { // S'il y a au moins une erreur

echo '<div style="border:1px solid #ff0000; padding:5px;">
<p style="color:#ff0000;">Désolé, il y a '.$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>';
if (isset($erreur6)) echo '<p>'.$erreur6.'</p>';
if (isset($erreur7)) echo '<p>'.$erreur7.'</p>';

echo '</div><p><a href="http://www.pensionchatdu83.fr/photo.html">Réessayez</a></p>';
}
***********************************************/
}
?>
Derien

Edit 27/05/2014 à 06h59
Je trouve ça bizarre, j'ai fais un teste sur votre site ça fonctionne!!! ça a laire fonctionner parfaitement. Ne changé rien..
 
Dernière édition:

ladylou

New Member
#5
Merci lxwfr, je vais essayer de comprendre et faire quelques tests supplémentaires, c'est déjà gentil d'avoir répondu.
 
#6
Bonjour à tous,

J'ignore si je trouverai ma réponse ici et si le problème concerne l'hébergement mais je me lance sait-on jamais...
Cela fait plusieurs jours que je reçois des mails (via le formulaire de contact de mon site) qui sont incomplets. Je m'explique : le champs du nom et de l'adresse mails sont bien remplies et les informations me parviennent bien, par contre le champs du message reste vide... rien, pas une lettre ni une ponctuation...au début je pensais que cela était une mauvaise manipulation de mes visiteurs Baignoire à porte (bien qu'en principe un champs incomplet ne fait pas partir le message...) et puis comme cela s'est répété plusieurs fois, j'ai commencé à chercher d'où pouvait venir le problème sachant que je n'ai rien changé au fichier php ni au fichier html concernant ce formulaire.
J'ai donc commencé par m'envoyer quelques messages (via le formulaire de contact de mon site) certains me sont arrivés et d'autre non...jusqu'à ce que je m'aperçoive que tous les messages contenant un "ç" m'arrivaient vierge....le problème viendrait donc de cette lettre ou plus exactement du cedille puisque les autres messages (contenant un c) arrivent intacts. est ce que quelqu'un pourrait me donner un petit tuyaux pour me dire d'où vient le problème subitement (cela fait deux ans que j'utilisais mon formulaire sans ,aucun problème ). Merci d'avance de votre aide.
Je te conseille de revoir la configuration de ton site, peut être que l'option reçevoir mail n'est pas complet ou que tu as oublié un code.
 
Haut