CAULNES, France

Empêcher les adresses e-mail + mots dans les DM Voxel

Empêcher les adresses e-mail + mots dans les DM Voxel

Important : Uniquement compatible avec le thème WordPress : Voxel

J’ai trouvé un moyen assez rapide d’empêcher les utilisateurs de saisir et de soumettre des adresses e-mail sur le système de messages directs Voxel.

Il vérifie de nombreux styles possibles d’injections d’adresses e-mail comme ceux-ci et des options mixtes de ces variantes :

  • email@email.com
  • email @ email . com
  • email (at) email (dot) com
  • email [at] email [dot] com
  • email at email dot com
  • Voici ce que vous devez savoir pour le configurer

    #1 : Ajouter une copie du /voxel/templates/widgets/ messages.php dans le thème de votre enfant dans la même structure de dossiers comme /voxel-child/templates/widgets/. Vous y ajouterez une chose à l’étape suivante.

    #2 : Maintenant, vous le ferez ajouter cet identifiant pour la zone de texte à la ligne 250:

				
					<textarea id="message-text"
				
			

#3 : Alors, il te faut un conteneur vide en dessous de votre widget de boîte de réception sur la page /inbox/qui a l’ID « notification par e-mail ».

#4 : La dernière chose dont vous avez besoin, c’est de ceci fonction à mettre sous le champ de votre boîte de réception. Vous pouvez le faire avec un outil comme WP Code et ajouter l’extrait petit code sous le widget de la boîte de réception aussi.

Voici l’extrait de code qui vérifie les adresses email dans le champ message et s’il en détecte une, il la change en ***** ! 🙂
Amusez-vous à empêcher les emails dans votre messagerie interne et faites-moi savoir si vous trouvez quelque chose à améliorer par rapport à celle-ci qui pourrait intéresser d’autres.

				
					document.addEventListener('DOMContentLoaded', function () {
  var targetElement = document.querySelector('#email-notification');
  var notificationDiv = document.createElement('div');
  notificationDiv.textContent = "Email addresses are not allowed in messages.";
  notificationDiv.style.display = 'none'; // Hide the notification initially

  // Append the notification element below the target element
  targetElement.appendChild(notificationDiv);

  // Define a function to check for textarea after a timeout
  function checkForTextarea() {
    // Select the textarea using your provided selector
    var textarea = document.querySelector('#message-text');
    if (textarea) {
      // Function to check for email addresses and replace them with asterisks
      function checkAndReplaceEmailAddress() {
        var message = textarea.value;
		var emailRegex = /\b\w+\s*(@|\(at\)|\[at\]|\.|\(dot\)|\[dot\])\s*\w+\s*(\.|\(dot\)|\[dot\])\s*\w+\s*\b|\b\w+\s*@+\s*\w+\s*\.\s*\w+\s*\b/g;
        // Replace all email addresses in the message with asterisks
        message = message.replace(emailRegex, '******');
        textarea.value = message; // Update the textarea value after replacement

        // Display a notification if an email address is detected
        if (emailRegex.test(message)) {
          notificationDiv.style.display = 'block'; // Show the notification
        } else {
          // If no email address is detected, hide the notification
          notificationDiv.style.display = 'none'; // Hide the notification
        }
      }
      // Add an input event listener to the textarea to check and replace email addresses
      textarea.addEventListener('input', function () {
        checkAndReplaceEmailAddress();
      });
      // Add a blur event listener to the textarea to trigger the check when the user clicks away
      textarea.addEventListener('blur', function () {
        checkAndReplaceEmailAddress();
      });
      // Add a keydown event listener to the textarea to check and replace email addresses
      textarea.addEventListener('keydown', function () {
        setTimeout(checkAndReplaceEmailAddress, 0); // Check after a short delay
      });
    } else {
      console.error("Textarea not found. Please check your selector.");
    }
  }
  // Use a setTimeout to wait for the textarea to become available
  var timeout = 3000; // Adjust the timeout duration as needed
  setTimeout(checkForTextarea, timeout);
});
				
			

PS : Vous pouvez aller encore plus loin pour empêcher cela uniquement pour des utilisateurs spécifiques si vous donnez aux règles de visibilité de l’élément de code court de l’afficher uniquement, par exemple, si un utilisateur n’a pas encore rempli son image dans son profil ou n’a pas publié de message. , etc. vous l’appelez 🙂

MISE À JOUR 1 : Le scénario qui vérifie adresses mail ET numéro de téléphone comme un motif

#1 : Il affiche ***** s’il y a au moins 6 chiffres consécutifs sans aucun autre caractère entre eux, puis affiche une notification pour le téléphone et un bouton de fermeture pour accuser réception de l’erreur commise 🙂

				
					document.addEventListener('DOMContentLoaded', function () {
  var targetElement = document.querySelector('#email-notification');
  var notificationDiv = createNotificationDiv("Email addresses and phone numbers are not allowed in messages.");
  targetElement.appendChild(notificationDiv);

  function createNotificationDiv(text) {
    var notificationDiv = document.createElement('div');
    notificationDiv.textContent = text;
    notificationDiv.style.display = 'none';
    
    // Add a close button to the notification
    var closeButton = document.createElement('span');
    closeButton.textContent = 'Okay, acknowledged. Will not do it again.'; // You can use any symbol you prefer
    closeButton.classList.add('email-notification-close');
    closeButton.onclick = function () {
      notificationDiv.style.display = 'none';
    };
    notificationDiv.appendChild(closeButton);
    
    return notificationDiv;
  }

  function checkForTextarea() {
    var textarea = document.querySelector('#message-text');
    if (textarea) {
      function checkAndReplace() {
        var message = textarea.value;
        var emailRegex = /\b\w+\s*(@|\(at\)|\[at\])\s*\w+\s*(\.|\(dot\)|\[dot\])\s*\w+\s*\b|\b\w+\s*@+\s*\w+\s*\.\s*\w+\s*\b/g;
        var phoneRegex = /(?:\+\d{1,2}\s*)?(?:\d{1,4}[-\s]?){6,}\d{1,4}/g;

        message = message.replace(emailRegex, '********');
        message = message.replace(phoneRegex, '********');

        textarea.value = message;

        var emailAndPhoneCount = (message.match(/\*/g) || []).length;
        if (emailAndPhoneCount >= 6) {
          notificationDiv.style.display = 'block';
        } else {
          notificationDiv.style.display = 'none';
        }
      }

      textarea.addEventListener('input', function () {
        checkAndReplace();
      });

      textarea.addEventListener('blur', function () {
        checkAndReplace();
      });

      textarea.addEventListener('keydown', function () {
        setTimeout(function () {
          checkAndReplace();
        }, 0);
      });
    } else {
      console.error("Textarea not found. Please check your selector.");
    }
  }

  var timeout = 3000;
  setTimeout(checkForTextarea, timeout);
});
				
			

#2: But now you will also need to add a snippet into your custom CSS to style the close button to acknowledge the fault:

				
					/*no email allowed text close button styles*/
.email-notification-close{
  cursor: pointer;
  border: solid;
  border-width: 2px;
  margin-left: 5px;
  padding: 5px;
}

				
			

It will look like this if a phone number was entered:

MISE À JOUR 2 : Aussi vérifier les textes suspects cela pourrait conduire à un échange d’informations de contact

#1 : Ajoutez cet extrait à la ligne 35 du code ci-dessus comme vérification supplémentaire. vous pouvez ajouter votre propre liste de modèles :

				
					// Define patterns to check for
var wordPatterns = [
  /\bemail me at\b/gi,
  /\bcontact me via email\b/gi,
  /\bsend me your email\b/gi,
  /\blet's connect via email\b/gi,
  /\bI can be reached at\b/gi,
  /\bdrop me an email\b/gi,
  /\bshare your email\b/gi,
  /\bDM me your email\b/gi,
  /\bexchange emails\b/gi,
  /\bget in touch at\b/gi,
  /\breach out via email\b/gi,
  /\bhere's my email\b/gi,
  /\bemail for further discussion\b/gi,
  /\bshare your contact info\b/gi,
  /\bconnect with me using email\b/gi,
  /\bemail communication\b/gi,
  /\bmy email address is\b/gi,
  /\bcontact details: email\b/gi,
  /\bmessage me your email\b/gi,
  // Add more patterns as needed
];

// Function to replace matched patterns with asterisks
function replaceWordPatterns(text, patterns) {
  patterns.forEach(function (pattern) {
    text = text.replace(pattern, '********');
  });
  return text;
}

// Replace word patterns with asterisks
message = replaceWordPatterns(message, wordPatterns);

textarea.value = message;

				
			
Sylvain_LC
Sylvain_LC
CEO & Fondateur de Powerstreet Groupe
powerstreet.io

CEO & Fondateur de Powerstreet Groupe. Passionné de nouvelles technologies.

Articles Similaires
Laisser un commentaire

Your email address will not be published.Required fields are marked *