IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

mailto et htmlspecialchars/htmlentities


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut mailto et htmlspecialchars/htmlentities
    Salut,

    Je fais un mailto: et dans le subject il peut y avoir de texte, n'importe quel type de texte, donc des ", ' et autres caractères spéciaux comme "é".

    Niveau php cela donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href=\"mailto:?subject=".htmlentities(htmlspecialchars($row_book["picbook_name"]))."&body=%0A".htmlentities(htmlspecialchars("Chapitre ".$current_chapter["chapter_number"].": ".$current_chapter["chapter_name"].""))."%0A%0A".htmlspecialchars("Lien: $link/book.php?bc=$cId")."\"><img style=\"border:0px;\" src=\"$img/share-email.png\"></a>
    J'ai été obligé d'ajouter htmlentities car sous Windows avec Live mail un caractère du style é sort comme ceci:
    Chapitre 1: Un écueil fuyant...
    ou lieu de
    Chapitre 1: Un écueil fuyant...

    Et bizarrement cela n'est pas correct si on clique avec Firefox ou Chrome pour envoyer le mail mais c'est correct depuis IE9 !

    A part htmlentities et htmlspecialchars je ne vois pas quelle fonction utiliser pour un lien de type mailto.

    Vous avez une idée ?

    Merci,
    Vincent.

    PS: Ca fonctionne bien depuis un Mac que ce soit avec Thunderbird ou avec l'application Mail.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est soit htmlentities soit htmlspecialchars, mais pas les 2, regarde bien la doc des deux fonctions et leurs paramètres charset

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est soit htmlentities soit htmlspecialchars, mais pas les 2, regarde bien la doc des deux fonctions et leurs paramètres charset
    J'ai essayé avec l'un et l'autre et le problème persiste. Mais bizarrement il n'y a ce soucis qu'avec Chrome ou Firefox qui lance Live Mail, pas de soucis si c'est IE9 qui lance Live mail !

    Ensuite, au niveau html, htmlentities change bien le "é" en "&eacute;", donc c'est bizarre qu'un &eacute; devienne é sous windows live mail lancé par Chrome ou Firefox.

    Une idée qqn ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    t'as bien le charset pour les fonctions ?
    ton fichier est en utf-8 ? ton serveur aussi ? ton content-type aussi ? t'as base sql aussi ? t'as connexion sql aussi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    t'as bien le charset pour les fonctions ?
    ton fichier est en utf-8 ? ton serveur aussi ? ton content-type aussi ? t'as base sql aussi ? t'as connexion sql aussi ?
    Non mais c'est au niveau html/javaqscript et j'ai trouvé une piste:
    http://www.phpdesigner.fr/ressources...entuation.html

    Donc quand je mets %C8 dans le body= j'ai bien en retour le caractère È, par contre si je laisse la fonction htmlentities modifier È, j'ai en retour le caractère Ã.

    Dans le site il dit:
    Voici la table de correspondance des code %00 à %FF. Les plus perspicaces constaterons que ce n'est rien d'autre que la vieille table de correspondance de la norme ISO-8859-1.

    Et bizarrement, sur php.net il est dit pour htmlentities "Actuellement, le jeu de caractères ISO-8859-1 est utilisé par défaut. "

    Donc il me faudrait la bonne fonction php qui modifie par exemple È en %C8 pas en &Egrave.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    t'as bien le charset pour les fonctions ?
    ton fichier est en utf-8 ? ton serveur aussi ? ton content-type aussi ? t'as base sql aussi ? t'as connexion sql aussi ?
    J'ai trouvé, c'est rawurlencode.

    Sauf que maintenant ça ne marche plus sous Mac os, que ce soit avec Thunderbird ou avec l'application Mail. Dès qu'il y a un caractère spécial le body du mail devient vide et pourtant ca marche sous Windows 7 que ce soit avec Chrome, Firefox ou IE9.

    Voici le résultat du rawurlencode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="mailto:?subject=20%20milles%20lieues%20sous%20les%20mers&body=coucou%0AChapitre%201%3A%20Un%20%E9cueil%20fuyant...%C8%0A%0ALien%3A%20http%3A%2F%2Flocalhost%3A8888%2FElizaNet2%2Fbook.php%3Fbc%3D20">
    Qqn a une idée pourquoi maintenant ca ne marche plus sous mac ?

    Merci,
    Vincent.

  7. #7
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Salut

    Comme stealth35 a évoqué à plusieurs reprises le charset utf8, essaye à toute fin utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....subject=".utf8_decode($row_book["picbook_name"])." ....
    Ensuite, les caractéres spéciaux dans les sujets d'email, c'est pas top, en tout cas pas trop conseillé.
    Et certains outils de messagerie peuvent même bloquer le mail.

Discussions similaires

  1. htmlspecialchars & htmlentities
    Par redah75 dans le forum Langage
    Réponses: 21
    Dernier message: 15/09/2008, 19h56
  2. htmlspecialchars, addslashes, htmlentities et autres
    Par senacle dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2008, 22h25
  3. htmlentities et htmlspecialchars entités numériques
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2007, 13h40
  4. [Smarty] Problème sous Smarty : htmlspecialchars ou htmlentities
    Par harlock59 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 12/05/2006, 15h57
  5. Réponses: 7
    Dernier message: 24/09/2005, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo