Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage d'une adresse mail sous forme d'image

6 réponses
Avatar
Allo Tobus
Bonjour,

Pour un annuaire visible au public, j'ai du mettre en place
un formulaire securisé pour envoyer des mails, avec un code
graphique a recopier etc... là, tout est ok.

Mais je souhaite aussi dans la fiche annuaire du membre,
+ annuaire par liste dans l'intranet faire apparaitre l'adresse
mail en clair a l'ecran, mais sous forme d'affichage d'une image
(ecriture noir sur fond blanc).
Connaissez-vous un script performant et qui genere à la
volée (rapidement) une telle image...
Le but ici etant que toutes les pages qui peuvent etre parsées
par des robots, ne puissent contenir les @ mails en clair...

Merci pour vos infots.
AT

6 réponses

Avatar
Pascal PONCET
Connaissez-vous un script performant et qui genere à la
volée (rapidement) une telle image...


Salut,

Tu devrais trouver ton bonheur à cet endroit :
http://www.php.net/manual/fr/ref.image.php

Il y a même un exemple avec insertion de texte, ce qui correspond à ton
besoin. Le script ne parait pas complexe, autant le développer toi-même.

Bonne chance.

Avatar
P'tit Marcel
Mais je souhaite aussi dans la fiche annuaire du membre,
+ annuaire par liste dans l'intranet faire apparaitre l'adresse
mail en clair a l'ecran, mais sous forme d'affichage d'une image
(ecriture noir sur fond blanc).
Connaissez-vous un script performant et qui genere à la
volée (rapidement) une telle image...


supposons que l'adresse email soit dans un champ de table mysql, et que
le membre est identifié par un nombre $id_membre qui est la clé de cette
table.

dans la page qui affiche la liste, tu mettras simplement :

<img src='mel.php?id=<?php echo $id_membre; ?>'>


et tu crées un script mel.php pour créer l'image à la volée :

<?php
# récupération du paramètre
$id_membre = @$_GET['id_membre'];
if(empty($id_membre)) die('paramètre id_membre manquant');
if(!is_numeric($id_membre))
die("paramètre id_membre non numérique: $id_membre");

# recherche de l'email dans la base
mysql_connect('localhost', 'user', 'pass')
or die('connection impossible: '.mysql_error());
mysql_select_db('base') or die('base non trouvée');
$sql = "select email from membre where id = $id_membre";
$res = @mysql_query($sql)
or die("erreur sql:<br/>$sql<br/>".mysql_error());
$nb = mysql_num_rows($res);
if($nb<>1)
die("erreur base: $nb membres trouvés pour id $id_membre");
list($email) = mysql_fetch_row($res);
mysql_close();

# création de l'image à la volée
$image = @imagecreate(200, 15)
or die("Impossible de créer une image GD");
header ("Content-type: image/png");
$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);
$taille_lettres = 1;
imagestring($image, $taille_lettres, 5, 5, $email, $noir);
imagepng($image);
imagedestroy($image);
?>

tu peux tester ce script en l'appelant directement du navigateur avec un
identifiant de membre en paramètre.

eça
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/

Avatar
Ben
Bonjour,

Pour un annuaire visible au public, j'ai du mettre en place
un formulaire securisé pour envoyer des mails, avec un code
graphique a recopier etc... là, tout est ok.

Mais je souhaite aussi dans la fiche annuaire du membre,
+ annuaire par liste dans l'intranet faire apparaitre l'adresse
mail en clair a l'ecran, mais sous forme d'affichage d'une image
(ecriture noir sur fond blanc).
Connaissez-vous un script performant et qui genere à la
volée (rapidement) une telle image...
Le but ici etant que toutes les pages qui peuvent etre parsées
par des robots, ne puissent contenir les @ mails en clair...

Merci pour vos infots.
AT
Un truc pas mal aussi, utiliser javascript pour encoder le mail. Les

robots n'y voient que tu feu.

http://www.lashampoo.com/pages/Cryptage.html

Et pas besoin de modifier ton code PHP (mais le client doit accepter
javascript sous peine de ne rien voir).

a+
Ben

Avatar
Allo Tobus
Merci, c'est exactement cela...

J'ai à ma disposition dans la page la ligne du membre
extrait de la table et donc ligneMembre[email] disponible...

Donc, la partie traitement de l'email en image me va fort bien.
Mais pour le transformer en fonction:

# création de l'image à la volée
function TransformMailImg($email)
{
$image = @imagecreate(200, 15)
or die("Impossible de créer une image GD");
header ("Content-type: image/png");
$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);
$taille_lettres = 1;
imagestring($image, $taille_lettres, 5, 5, $email, $noir);
imagepng($image);
imagedestroy($image);
return ($image);
}

Donc, si la partie ci-dessus est transformée en fonction,
je dois pouvoir faire quelque chose comme cela, non ?

$mailGraphique = TransformMailImg($email);

<img src='".$mailGraphique."'>

Merci de ton aide.
AT
Avatar
P'tit Marcel
Donc, si la partie ci-dessus est transformée en fonction,
je dois pouvoir faire quelque chose comme cela, non ?
$mailGraphique = TransformMailImg($email);
<img src='".$mailGraphique."'>


non. la valeur de src doit être l'URL d'un objet sur internet, ce ne
peut pas être une simple fonction php.

le plus simple est de créer un script php qui ne fait que ça, comme je
te l'ai suggéré.

eça
--
P'tit Marcel

Avatar
Olivier Miakinen

Donc, si la partie ci-dessus est transformée en fonction,
je dois pouvoir faire quelque chose comme cela, non ?
$mailGraphique = TransformMailImg($email);
<img src='".$mailGraphique."'>


non. la valeur de src doit être l'URL d'un objet sur internet, ce ne
peut pas être une simple fonction php.


Quoique... si l'image est relativement petite (ce qui semble être le cas
ici) on doit pouvoir utiliser le schéma d'URL « data » :

<cit. http://www.ietf.org/rfc/rfc2397.txt&gt;
<IMG
SRC="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH
hhx4dbgYKAAA7"
ALT="Larry">
</cit.>

Si j'ai le temps j'essaierai de le faire, pour voir.

le plus simple est de créer un script php qui ne fait que ça, comme je
te l'ai suggéré.


Oui.