Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/07/2011, 17h44   #1
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
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 :
<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.
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 17h53   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
c'est soit htmlentities soit htmlspecialchars, mais pas les 2, regarde bien la doc des deux fonctions et leurs paramètres charset
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 18h13   #3
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
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 ?
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 18h54   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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 ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 19h14   #5
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
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.
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2011, 19h47   #6
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
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 :
<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.
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 01h56   #7
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Salut

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

Code :
....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.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 02h42   #8
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Un petit complément, finalement pas trop hors sujet.

J'utilise une petite interface sympa qui permet de valider du code html vers prés de 24 clients mails, notemment le style utilisé.

validator html

A toute fin utile, et celà peut éviter de drôles de désagréments.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2011, 11h29   #9
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par alain31tl Voir le message
Salut

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

Code :
....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.
Voici une page de test avec rawurlencode():
http://boxfly.free.fr/test/mailto.html

Donc sous Mac (j'ai testé avec un macbook pro et un iMac) un lien mailto ne remplit pas le body du mail si il y a un caractère spécial dans ce body alors que ca marche sous Windows avec Firefox ou IE ou Chrome qui lance Windows Live mail.

Pour le 3ème lien avec utf8_encode() et cette fois ca marche avec Mac mais plus avec Windows

Je ne sais plus quoi faire J'ai l'impression d'avoir tout essayé...
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h14.


 
 
 
 
Partenaires

Hébergement Web