[Hack com_mail] MAILTO_TIMEOUT

Mardi, 13 Octobre 2009 Écrit par Fly06

Lu 1607 fois
|
Imprimer
Envoyer
|
1
pixel.gif 0%

Certains l'ont déjà remarqué, l'envoi du lien d'un article à un ami via le composant com_mailto peut paraître aléatoire avec une propension à ne plus fonctionner du tout lorsque l'on multiplie les tests en utilisant les valeurs déjà saisies et proposées par le cache du browser.

Le retour est une page blanche flanquée du message laconique :

Cet e-mail n'a pas pu être envoyé

La réponse à ce "mystérieux" problème tient en deux blocs de codes du fichier controller.php.

Au début du fichier :

define('MAILTO_TIMEOUT', 20);

et dans la méthode send() :

if($timeout == 0 || time() - $timeout < MAILTO_TIMEOUT) {
 JError::raiseNotice( 500, JText:: _ ('EMAIL_NOT_SENT'));
 return $this->mailto();
 }

Le formulaire "Envoyer à un ami" est donc protégé contre les robots spammers via la constante MAILTO_TIMEOUT. La variable $timeout contenant le timestamp UNIX sauvé en session lors de l'affichage du formulaire (méthode mailto()), le mail ne sera pas envoyé si l’utilisateur met moins de 20 secondes pour remplir le formulaire.

Comme indiqué au début de ce billet, le côté pervers de ce mécanisme est qu'un utilisateur qui aurait échoué une première fois a toutes les chances d'échouer à nouveau lors de sa prochaine tentative du fait qu'il n'a pas à re-saisir les champs du formulaire grâce au cache du browser.

A vous de voir si cette constante doit être diminuée ou pas...

 
Share
Créer un compte
Calculator
Login

Login



Register

Créer un compte

Question

Calculator

FRF
Fly06.Fr (C) 2009-2011