PHPMailer et l'esperluette

Par Hexa, il y a 4 ans


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:

étrange, non?

Vous savez comment remédier à ça?

Merci
Hexa

5 réponses

Hexa, il y a 4 ans

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?

Carouge10, il y a 4 ans

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, il y a 4 ans

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

Lartak, il y a 4 ans

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, il y a 4 ans

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!