Rendre le mail obligatoire dans les coms

Bonjour à tous, est-ce qu'il y a un moyen assez simple de rendre obligatoire le renseignement du mail dans les commentaires ?
Merci,

Pierre

Réponses

  • Personne ne sait ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Sans modifier le code, non ce n'est pas possible

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • zetraderzetrader Member
    juin 2013 modifié
    Bonjour, merci pour la réponse, une suggestion pour la 5.1.8 :
    mettre la possibilité de rendre le mail obligatoire (ou facultatif) dans le renseignement des commentaires en cochant/décochant une case du côté admin ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour zetrader
    Pour etre franc avec toi, je ne pense pas que cette fonctionnalité soit utile, car celui qui ne veut pas laisser son email, mettra une adresse bidon dans le genre toto@nimp.com par exemple. Donc rendre la saisie obligatoire n'apporte pas grand chose.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • alors moi j'ai une meilleure idée hein, une inscription avec une validation puis une gestion du compte perso et puis euh nan c'est chiant finalement ... ]:D
  • Franck-AWOFranck-AWO Member
    juillet 2013 modifié
    Bonjour,
    Stéphane a écrit:
    Bonjour zetrader
    Pour etre franc avec toi, je ne pense pas que cette fonctionnalité soit utile, car celui qui ne veut pas laisser son email, mettra une adresse bidon dans le genre toto@nimp.com par exemple. Donc rendre la saisie obligatoire n'apporte pas grand chose.

    Tout à fait d'accord. Cependant, je trouve la fonction intéressant. Notamment dans le cas où on souhaite communiquer avec l'auteur avant de publier son commentaire. Et puis il y a la méthode checkMail que j'aimerais bien réussir à faire fonctionner ;)

    Malgré que Frédéric auteur du célèbre Thème Mystique m'ait averti "[em]je te déconseille de modifier le core de PluXml sans quoi tu t'en sortira plus lors de chaque update de Pluxml[/em]" - merci Frédéric pour la mise à jour de ton thème ;) - voici comment j'ai tenté de rendre le mail non facultatif dans les coms [PluXml 5.1.7 - Thème Mystique 1.8]:
    [== Indéfini ==]
    /www/core/lib$ diff class.plx.motor.php class.plx.motor.php.ori
    786c786
    < 			if(!empty($content['name']) AND !empty($content['content']) AND !empty($content['mail'])) { # Les champs obligatoires sont remplis
    ---
    > 			if(!empty($content['name']) AND !empty($content['content'])) { # Les champs obligatoires sont remplis
    
    

    Ca fonctionne, mais je ne sais pas si c'est "propre" ?

    Et puis il faudra certainement modifier à nouveau class.plx.motor.php à la prochaine mise à jour de PluXml.

    Par contre, la méthode checkMail quelques lignes plus bas ne semble pas être appliquée :
    [== PHP ==]
    $comment['mail'] = (plxUtils::checkMail(trim($content['mail'])))?trim($content['mail']):'';
    

    Pourtant la méthode est bien présente dans core/lib/class.plx.utils.php :
    [== PHP ==]
    	public static function checkMail($mail) {
    
    		if (strlen($mail) > 80)
    			return false;
    		return preg_match('/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|("[^"]+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $mail);
    	}
    

    Comme je n'y connais pas grand chose en php j'ai essayé différents trucs infructueux que je n'ose pas montrer ici :8

    A vrai dire je n'arrive pas à mettre en évidence si c'est la méthode qui ne fonctionne pas ou autre chose. En fait, quelque soit la chaîne de caractère(s) qu'on saisisse pour l'adresse email, le commentaire est validé. Autre raisonnement basique : je ne pense pas que cela vienne du Thème Mystique car la méthode checkMail ne semble pas mieux fonctionner avec le thème par défaut.

    Quelqu'un saurait-il pourquoi cette méthode ne fonctionne pas, ou une piste pour mettre en évidence pourquoi ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    @Franck-AWO: pour la validation des commentaires je te propose de regarder ce tuto que je viens de rédiger: http://goo.gl/iuIRVK
    Il te permet nottament de mettre en place le controle de l'adresse email.

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Merci beaucoup Stéphane,

    A première vue ça fonctionne, génial!

    Comme j'utilise le Thème Mystique il m'a juste fallu retirer la ligne qui se situe au-dessus de la balise <form action...> dans le fichier themes/theme-mystique/commentaires.php :
    [== PHP ==]
                          <strong style="color:red;"><?php $plxShow->comMessage(); ?></strong>
    
    

    Encore quelques réglages CSS et ça sera parfait.

    @zetrader/Pierre : sans modifier le code c'est peut-être pas possible, mais avec ce tuto c'est du gateau ;)

    Et pourquoi pas oui, une future option dans les paramètres de l'admin...

    Merci aussi aux personnes et équipes qui développent les jquery*!
  • bdube30bdube30 Member
    juillet 2014 modifié
    En faisant une recherche, je suis tombé sur ce sujet. Il est un peu vieux, mais toujours d'actualité je crois. Avec HTML5 maintenant, il y a un moyen facile pour rendre obligatoire la saisie d'un champs de formulaire. Dans le fichier commentaires.php du thème, il faut modifier cette ligne :
    <input id="id_mail" name="mail" type="text" size="20" value="<?php $plxShow->comGet('mail',''); ?>" />
    
    Pour y ajouter «required» à la fin. La validation du formulaire sera impossible sans saisur une adresse email. Comme ceci:
    <input id="id_mail" name="mail" type="email" size="20" value="<?php $plxShow->comGet('mail',''); ?>" required />
    
    Comme vous l'avez peut-être remarqué, un autre changement avec HTML5 nous permet d'indiquer comme type de formulaire «email». Le formulaire sera seulement validé si l'adresse indiqué est bien une adresse e-mail.

    En espérant que cela puisse aider quelqu'un. Pour les autres changement dans les formulaires avec HTML5 : http://www.w3schools.com/html/html5_form_attributes.asp
  • Bonjour Benjamin, effectivement, toujours d'actualité, exactement ce que je voulais, simple et efficace ce changement de code, merci beaucoup :)
  • jLjjLj Member
    un mot : MERCI :)
  • bdube30 a écrit:
    En faisant une recherche, je suis tombé sur ce sujet. Il est un peu vieux, mais toujours d'actualité je crois. Avec HTML5 maintenant, il y a un moyen facile pour rendre obligatoire la saisie d'un champs de formulaire. Dans le fichier commentaires.php du thème, il faut modifier cette ligne :
    <input id="id_mail" name="mail" type="text" size="20" value="<?php $plxShow->comGet('mail',''); ?>" />
    
    Pour y ajouter «required» à la fin. La validation du formulaire sera impossible sans saisur une adresse email. Comme ceci:
    <input id="id_mail" name="mail" type="email" size="20" value="<?php $plxShow->comGet('mail',''); ?>" required />
    
    Comme vous l'avez peut-être remarqué, un autre changement avec HTML5 nous permet d'indiquer comme type de formulaire «email». Le formulaire sera seulement validé si l'adresse indiqué est bien une adresse e-mail.

    En espérant que cela puisse aider quelqu'un. Pour les autres changement dans les formulaires avec HTML5 : http://www.w3schools.com/html/html5_form_attributes.asp

    Une curiosité, ces derniers temps, j'ai un spammeur qui arrive à poster des commentaires sans mettre d'adresse email (commentaire posté avec formulaire vide au niveau du mail), j'ai vérifié et si j'essaye de faire un commentaire sur mon blog, le formulaire m'oblige à rentrer un email (si champ vide cela passe pas et si je mets blabla sans le @ non plus, bref le code marche bien), comment ce spammeur peut-il contourner cette protection ? En utilisant un vieux navigateur qui ne connait pas html5 ?
  • mathieumathieu Member
    juin 2015 modifié
    si la vérification se fait du coté du navigateur, elle peut être facilement contournée.
    je viens de mettre un commentaire "test - test" en quelques secondes sans adresse e-mail

    pour que la vérification soit efficace il faudrait rajouter un test côté serveur mais comme disait Stéphane il y a 2 ans, quelqu'un qui n'a pas envie de laisser son adresse e-mail laissera une adresse bidon. ensuite on pourrait penser à une fonctionnalité qui laisse un message "attention vous n'avez pas indiqué d'adresse e-mail, voulez-vous quand même envoyé le commentaire ?" mais si on arrive à là, ça va finir avec zetrader qui va faire tout le travail d'investissement et les clients voudront juste toucher les bénéfices sans travailler. :lol:


    au sujet de ce spammeur, tu penses qu'il s'agit d'une personne ou d'un robot ? parce que s'il s'agit d'un robot, il faudra d'abord réfléchir à améliorer la question anti-robot
  • zetraderzetrader Member
    juin 2015 modifié
    Vu ton commentaire de test, il est bien passé.
    Tu as contourné comment ? Si je mets test (sujet) - test (message) comme toi, pluxml me demande de renseigner le champ e-mail, ceci en utilisant google chrome ou firefox.
    Et si je mets test (en sujet), test (en mail) et test (en message), cela me demande de renseigner un mail correct (avec @), il y a donc une faille facilement exploitable, peux-tu me dire comment ?
  • Autre question de curiosité, pourrais-tu essayer de faire le même com de test sur wordpress (qui par défaut oblige à rentrer un mail valide lors d'un com) ?
    J'ai une version de tests de wordpress, tu peux essayer ici de contourner comme tu l'as fait pour pluxml :
    http://zetrader.fr/wp4/
  • c'est avec la console de développement de mon navigateur, j'ai directement édité le code HTML et enlevé le "required"
    avec WordPress ça ne fonctionne pas puisqu'il y a un test qui est fait côté serveur
  • GariGari Member
    *La* règle à ne jamais oublier, c'est que tout contrôle effectué côté "navigateur" peut être contourné. Ecrire "required" dans un champ revient à faire un contrôle du côté du navigateur. Il faut donc, comme certains l'ont dit, effectuer nécessairement un contrôle côté "serveur" dès lors que le contrôle est obligatoire et non simplement "de confort".
  • Merci pour vos contributions.
    Bah moi, je veux bien mettre le contrôle côté serveur puisque c'est moins contournable ainsi, comment fait-on pour le mettre côté serveur ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    édite le fichier core\lib\class.plx.motor.php

    remplace la ligne
    if(!empty($content['name']) AND !empty($content['content'])) { # Les champs obligatoires sont remplis
    

    par
    if(!empty($content['name']) AND !empty($content['content']) AND plxUtils::checkMail(trim($content['mail']))) { # Les champs obligatoires sont remplis
    

    Rendre obligatoire l'adresse email n'a aucun intérêt
    1) celui qui ne vaut pas laisser sa vraie adresse mettra toto@nimp.com
    2) et ce n'est pas ça qui empêchera le spam: voir 1)

    en + ça oblige à modifier le code de PluXml, donc pas bien là aussi

    Mais voilà pour répondre à ta question la modif à faire ;)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • GariGari Member
    100% d'accord avec Stéphane sur le côté inutile de l'obligation, je suis moi-même un grand utilisateur d'adresses de type toto@nimp.com :D
  • Merci Stéphane, dans mon cas, ce n'est pas pour obliger à mettre un vrai mail, c'est plutôt pour limiter le spam, et depuis un an, cela marchait plutôt bien, j'ai eu moins de spam grâce au fait de faire saisir le mail, depuis la mise en place de ce code cela a réduit le nombre de spams reçus en commentaires jusqu'à ce qu'un spammeur découvre la faille et et m'envoie plusieurs spams par jour sans mettre de mail.
    Sinon j'imagine que l'autre manière de limiter le spam en plus de demander un mail à un format valide (toto@nimp.com) c'est de faire un captcha qui nécessite un peu plus de réflexion humaine (j'utilise le captcha par défaut de pluxml), est-ce qu'il y a un captcha un peu plus difficile pour les spammeurs que celui par défaut de pluxml ?
Connectez-vous ou Inscrivez-vous pour répondre.