Bonjour,
PHPMailer est installé et configuré sur mon humble site et fonctionne très bien.
Il s'occupe du formulaire de contact et m'envoi par mail les demandes.
Il y a quand-même une anomalie étrange...

Ce que je veux

Lorsqu'un visiteur saisi un texte tout va bien jusqu'à qu'il mette une esperluette, signe appelé aussi "é commercial": ça: &

Ce que j'obtiens

Hé bien tout le texte saisi après cette esperluette ne sera pas pris en compte dans l'envoi du mail.
Example:

  • Bonjour, je suis content d'être abonné chez Grafikart. = tout le texte sera envoyé.
  • Bonjour, je suis content d'être abonné chez Grafikart & compagnie. = seul ce qui est devant le "&" sera envoyé dans le mail.

étrange, non?

Vous savez comment remédier à ça?

Merci
Hexa

5 réponses


Lartak
Réponse acceptée

Bonsoir.
Tu peux tout simplement remplacer:

data: "name=" + name + "&email=" + email + "&msg_subject=" + msg_subject + "&phone_number=" + phone_number + "&message=" + message

Par:

data: {
    name,
    email,
    msg_subject,
    phone_number,
    message
}

Soit sous forme d'objet, et non en chaîne de caractères via data.

Hexa
Auteur

Hello,
je cherche tout de même un peu et j'ai l'impression que mon souci vient d'ajax, pas de phpmailer..

    $.ajax({
        type: "POST",
        url: "assets/php/envoiMailMailer.php",
data: "name=" + name + "&email=" + email + "&msg_subject=" + msg_subject + "&phone_number=" + phone_number + "&message=" + message,
        success : function(text){
            if (text == "success"){
                formSuccess();
            } else {
                formError();
                submitMSG(false,text);
            }
        }
    });

Regardez la ligne 4 où j'envoies les variables de mon formulaire vers leur traitement...
les variables sont séparées par une "&" esperluette!

Donc, si dans la case de saisie "name", j'écris "jacob & delafont" bin ce sont deux variables qui sont prises en compte!!
Je me retrouve avec:
name = "jacob"
delafont = ""

Bienentendu, comme la variable (delafont = "") n'existe pas, ce mot ne sera pas pris en compte.

Bizarre non?

Quelqu'un peut m'aider?

Bonjour,
il faut passer tes data par la méthode post et non en get
sinon je dirais "serialize" en js
voir ce sujet

Hexa
Auteur

Merci Carouge, mais je suis bien en POST.
Je veux bien sérialiser mais ça veut dire que je dois travailler en json?

Hexa
Auteur

Hé bin voilà, ça fonctionne!
Pour ma syntaxe j'ai ajouté une virgule après l'accolade de fin et tout est rentré dans l'ordre.
Désormais, merci à "Carouge10 & Lartak" transite bien du formulaire jusqu'au mail.

Merci!