PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 17/12/2014 08:57:55

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 220
Site Web

[plugin] MyProtectEmails

plxMyProtectEmails permet de protéger l'affichage des adresses emails dans les articles et les pages statiques de PluXml en utilisant un système d'encodage javascript.

Description

Téléchargement

HISTORIQUE
## Version 1.1 (09/07/2015) ##
[+] Protection des emails dans la méthode plxShow:staticInclude()

## Version 1.0 (16/12/2014) ##
version initiale


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#2 17/12/2014 13:12:43

Francis
Membre
Inscription : 19/11/2011
Messages : 421
Site Web

Re : [plugin] MyProtectEmails

Si je comprends bien, la protection des mails se fait maintenant avec ce plugin, elle n'est plus intégrée à CKEditor.

L'avantage est sans doute la simplification de la mise en place et des mises à jour ultérieures du plugin CKEditor, ce qui effectivement n'était pas un luxe  smile
mais aussi (et surtout) c'est que ce codage peut s'appliquer maintenant quel que soit l'éditeur choisi, et même si on n'utilise pas d'éditeur !

Hors ligne

#3 17/12/2014 14:18:31

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 220
Site Web

Re : [plugin] MyProtectEmails

@Francis: Exactement, c'est tout a fait ça


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#4 17/12/2014 16:13:59

je-evrard
Pluxml Staff
Lieu : pau
Inscription : 08/05/2012
Messages : 1 148
Site Web

Re : [plugin] MyProtectEmails

La protection d'email est optionnel sur spxtynimce donc on est bien.


Petit à petit l'oiseau fait son nid.
- Sites : Création web - Création artistique
- pluxml : Plugins - Simplebox - Visual Wizard - facebook vw

Hors ligne

#5 30/04/2015 02:58:50

Jerry Wham
Membre
Inscription : 13/07/2011
Messages : 2 553
Site Web

Re : [plugin] MyProtectEmails

Plutôt que d'utiliser la regex pour gérer les liens, je vous propose d'utiliser DOMDocument qui est plus fiable :

/**
	 * Méthode qui protège les adresses emails contre le spam
	 *
	 * @param	txt		chaine de caractères à protéger
	 * @return	txt 	chaine de caractères avec les adresses emails protégées
	 * @author	Cyril MAGUIRE
	 **/
	public static function protectEmails($txt) {
		if(preg_match('/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]/i', $txt)) {
			$DOM = new \DOMDocument();
			$DOM->loadHTML($txt);

			$list = $DOM->getElementsByTagName('a');

			foreach($list as $link){
			    $href = $link->getAttribute('href');
			    $text = $link->nodeValue;
			    //only match if href starts with mailto:
			    if(stripos($href, 'mailto:') === 0){
			    	$a = '<a';
			    	foreach ($link->attributes as $att) {
			    		$a .= ' '.$att->name.'="'.$att->value.'"';
			    	}
			    	$a .= '>'.$text.'</a>';
			    	$string = plxMyProtectEmails::encodeBin2Hex('document.write(\''.$a.'\')');
					$txt = str_replace($a, '<script type="text/javascript">eval(unescape(\''.$string.'\'))</script>' , $txt);
			    }
			}
                        
		        $s = preg_replace('/<input(\s+[^>]*)?>/i', '', $txt);
		        $s = preg_replace('/<textarea(\s+[^>]*)?>.*?<\/textarea(\s+[^>]*)?>/i', '', $s);
		        $s = preg_replace('/<(code|pre)(\b.*)<\/(code|pre)>/is', '', $s);
		        if(preg_match_all('/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i', $s, $matches)) {
			     foreach($matches[0] as $k => $v) {
				$string = plxMyProtectEmails::encodeBin2Hex('document.write(\''.$matches[0][$k].'\')');
				$txt = str_replace($matches[0][$k], '<script>eval(unescape(\''.$string.'\'))</script>' , $txt);
			    }
		        }
		}

		return $txt;
	}

Dernière modification par Jerry Wham (30/04/2015 03:02:30)


Mangez un castor, vous sauverez un arbre !

J'ai la tête dans le  ...code

Hors ligne

#6 04/07/2015 23:00:50

Francis
Membre
Inscription : 19/11/2011
Messages : 421
Site Web

Re : [plugin] MyProtectEmails

La protection des mails marche très bien pour les articles et les pages statiques, mais pas quand on affiche une page statique avec un staticInclude.
J'utilise une page statique pour le contenu d'une colonne latérale commune à tous les articles.

J'ai trouvé la solution en remplaçant, dans article.php et dans home.php :

[== PHP ==]
<aside>
  <?php   $plxShow->staticInclude(1);  ?>
</aside>

par :

[== PHP ==]
<aside>
  <?php
      ob_start();
      $plxShow->staticInclude(1);
      $txt = ob_get_clean();
      if ( ! empty($plxShow->plxMotor->plxPlugins->aPlugins['plxMyProtectEmails']) )
             { $txt = $plxShow->plxMotor->plxPlugins->aPlugins['plxMyProtectEmails']->protectEmails($txt); }
      echo $txt;
  ?>
</aside>

Est-ce que dans core/lib/class.plx.show.php, ce serait envisageable d'inclure un hook dans la fonction staticInclude($id), comme dans la fonction staticContent() ?
Ça permettrait de traiter ce cas de figure à l'intérieur du plugin MyProtectEmails et d'utiliser ce hook dans d'autre plugins à l'avenir, toujours pour le cas d'une page statique qui sert à gérer le contenu d'une colonne latérale ou d'un encart dans une page.

Dernière modification par Francis (06/07/2015 22:47:07)

Hors ligne

#7 06/07/2015 22:52:33

Francis
Membre
Inscription : 19/11/2011
Messages : 421
Site Web

Re : [plugin] MyProtectEmails

Pour préciser mon idée, ça consisterait à remplacer, dans la fonction staticInclude de core/lib/class.plx.show.php :

[== PHP ==]
if($files = $plxGlob_stats->query('/^'.str_pad($id,3,'0',STR_PAD_LEFT).'.[a-z0-9-]+.php$/')) {
	include(PLX_ROOT.$this->plxMotor->aConf['racine_statiques'].$files[0]);
}

par quelque chose de ce genre :

[== PHP ==]
if($files = $plxGlob_stats->query('/^'.str_pad($id,3,'0',STR_PAD_LEFT).'.[a-z0-9-]+.php$/')) {
	ob_start();
	include(PLX_ROOT.$this->plxMotor->aConf['racine_statiques'].$files[0]);
	$output = ob_get_clean();
	eval($this->plxMotor->plxPlugins->callHook('plxShowStaticInclude'));
	echo $output;
}

Hors ligne

#8 09/07/2015 13:48:49

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 220
Site Web

Re : [plugin] MyProtectEmails

## Version 1.1 (09/07/2015) ##
[+] Protection des emails dans la méthode plxShow:staticInclude()


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#9 09/07/2015 13:51:58

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 220
Site Web

Re : [plugin] MyProtectEmails

Francis a écrit :

Est-ce que dans core/lib/class.plx.show.php, ce serait envisageable d'inclure un hook dans la fonction staticInclude($id), comme dans la fonction staticContent() ?

la fonction staticInclude possède déjà un hook: plxShowStaticInclude

@Francis: merci d'avoir remonté le problème. c'est pris en compte avec la v1.1 du plugin.
J'ai repris en gros le code que tu proposes mais en l'adaptant en utilisant notamment le hook plxShowStaticInclude


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#10 09/07/2015 17:02:48

Francis
Membre
Inscription : 19/11/2011
Messages : 421
Site Web

Re : [plugin] MyProtectEmails

Merci Stéphane, je n'avais même pas fait attention que dans la fonction staticInclude, le hook que je proposais existait sur la ligne juste au-dessus ! ops

En tout cas, je viens de mettre en place la nouvelle version, ça marche super bien ! smile

Hors ligne

#11 13/07/2017 11:20:05

Francis
Membre
Inscription : 19/11/2011
Messages : 421
Site Web

Re : [plugin] MyProtectEmails

MyProtectEmails n'est pas proposé dans la liste des plugins officiels (où il devrait se trouver), ni dans celle des plugins non officiels, où j'ai jeté un œil au cas où.

Je l'ai retrouvé sur http://www.pluxopolis.net/myplugins et il n'y a pas de nouvelle version par rapport à celle que j'avais, mais pour celui qui découvre PluXml, ce serait intéressant de faire connaître ce plugin très utile.

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2017 PluXml.org, tous droits réservés