Anti spam php

Contenu du snippet

Permet de lancer le logiciel de messagerie du visiteur sans afficher l'adresse email dans le code HTML, ni dans l'URL.
Compatible toutes versions PHP. Très simple à mettre en place. Ne nécessite pas javascript.

Note : commentaires auxquels je ne répondrai pas "...le plus sûr c'est d'utiliser un formulaire..." Ce n'est pas le sujet ici.

Source / Exemple :


<?php
session_start(); 

$mail = 'ABCS@free.fr'; 

$num = isset($_SESSION['num'])? $_SESSION['num'] : 1; 
$_SESSION['num'] = isset($_SESSION['num'])? $_SESSION['num'] : $num; 

$envoi = isset($_GET['envoi'])? $_GET['envoi'] : ''; 

if ($envoi == $num) 
{ 
$_SESSION['num']++; 
header('Refresh:0;url="mailto:'.$mail.'"');  
} 

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<a href="<?php echo $_SERVER['PHP_SELF'].'?envoi='.$_SESSION['num'] ?>">lien de messagerie</a>
</body>
</html>

Conclusion :


Petit bug si l'on ouvre plusieurs onglets ou plusieurs fenêtres de cette même page dans le cas suivant:
- Ouvrez deux onglets ou deux fenêtres de cette même page.
- Cliquez sur le lien de messagerie de la deuxième fenêtre ou du deuxième onglet ouvert : le logiciel se lance.
- Revenez sur le premier onglet ou la première fenêtre et sans la rafraichir, cliquez sur le lien de messagerie : le logiciel ne se lance pas. Il se lancera au prochain clic sur ce même lien.

En fait le bug n'a que très peu de chance de se produire dans une utilisation courante.
Par ailleurs, il lance toujours le logiciel de messagerie au premier clic sur le lien, même avec plusieurs onglets ou fenêtres ouvertes.
Ce n'est qu'en cas de second clic (pour l'envoi d'un deuxième message) depuis une autre fenêtre précédemment ouverte et non rafraichie, que le logiciel ne se lance pas. Finalement ce n'est qu'un tout petit inconvénient car dans ce cas de figure déjà très peu fréquent, le logiciel sera lancé au clic suivant. Et n'a-t-on pas l'habitude de faire un deuxième clic sur un lien quand le premier ne fonctionne pas?

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.