J'aimerais proposer à mes visiteurs un système de "ticket" et pour ce faire, il me faudrait un code aléatoire pour chaque cas. BreezingForms peut-il générer ce type de code ?
Niveau :
Moyen
Version BF minimale requise :
BreezingForms Lite
Compatibilité Joomla! 4/5 :
✅
Disons que votre formulaire de contact, réclamation ou autre type de formulaire est déjà prêt, il ne lui manque que la génération d'un code aléatoire que nous nommerons ticket dans la suite du billet.
Nous avons deux options pour générer ce code aléatoire :
- À l'aide de JavaScript
- À l'aide de PHP
À l'aide de javascript
Créez, en tête de formulaire ou à l'emplacement que vous désirez, un champ de texte.
Rappel : Pensez à enregistrer régulièrement les modifications que vous apportez à vos éléments afin de ne pas les perdre inutilement.
- Libellez-le Votre ticket (ou autre comme vous le désirez).
- Nommez-le p.ex. ticket.
- Dans l'onglet Avancé, cocher la case Lecture seule afin qu'il ne puisse être modifié par l'utilisateur.
- Décidez de le laisser affiché sur le formulaire ou au contraire de le masquer à l'aide de la fonction Section non visible en frontend.
- Au bas de la page des options avancées, dans la partie Script d'initialisation, cliquez sur Personnalisé.
- Cochez Entrée du formulaire
- Cliquez ensuite le bouton Crée le code framework. Un code, identique (si vous avez nommé votre champ ticket) à ce qui suit, se place dans le champ.
function ff_ticket_init(element, condition) { switch (condition) { case 'formentry': break; default:; } // switch } // ff_ticket_init
- Après la ligne 4 case 'formentry': faite un retour chariot et insérez le code suivant (entre case 'formentry': et break;)
var chars = "0123456789ABCDEFGHIJKLMNPQRSTUVWXTZabcdefghijklmnpqrstuvwxyz"; var string_length = 12; // code à x caractères, peut être modifié var randomstring = ''; for (var i=0; i<string_length; i++) { var rnum = Math.floor(Math.random() * chars.length); randomstring += chars.substring(rnum,rnum+1); } element.value=randomstring
- Au final, vous devez obtenir un code complet ressemblant à ce qui suit :
function ff_ticket_init(element, condition) { switch (condition) { case 'formentry': var chars = "0123456789ABCDEFGHIJKLMNPQRSTUVWXTZabcdefghijklmnpqrstuvwxyz"; var string_length = 12; // code à 12 caractères, peut être modifié var randomstring = ''; for (var i=0; i<string_length; i++) { var rnum = Math.floor(Math.random() * chars.length); randomstring += chars.substring(rnum,rnum+1); } element.value=randomstring; break; default:; } // switch } // ff_ticket_init
- Enregistrez les propriétés de ce champ suivi de l'enregistrement de votre formulaire.
La variable string_length est égale à 12 et correspond au nombre de caractères composant le code généré. Ce nombre peut être modifié afin de s'adapter à vos exigences.
Vous pouvez éventuellement ajouter un préfixe personnalisé p.ex. en entrant pref_ (ou autre chose) entre les guillemets simples de la variable randomstring.
Il ne reste qu'à tester le formulaire avant de le mettre en ligne.
À l'aide de PHP
Si vous optez pour le code php, après avoir créé votre champ ticket, comme expliqué précédemment.
Rendez-vous ensuite dans les Propriétés avancées du formulaire → Plus d'options → Onglet Pièces de formulaire → Avant le formulaire.
Activez le bouton radio Personnalisé et entrez le code suivant :
$this->execPieceByName('ff_InitLib');
$characts = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ1234567890'; // Caractères autorisés
$token = '';
$length = 12; // nombre de caractères composant la chaîne, peut être modifié
$bytes = random_bytes($length);
for ($i = 0; $i < $length; $i++) {
$index = ord($bytes[$i]) % strlen($characts);
$token .= $characts[$index];
}
ff_setValue('ticket', $token); // On envoie la chaîne aléatoire dans le champs "ticket"
Dans la version php, le chiffre 12 de la variable $string_length peut également être adapté à vos préférences.
Les lettres O et o ont été retirées pour ne pas être confondues avec le 0 (zéro) mais vous pouvez les ajouter à la chaîne de caractères si vous le désirez. Au contraire, si vous ne désirez que des codes numériques, retirez les lettres de la variable. Vous aurez compris que faire au cas où vous ne nécessiteriez que des lettres…
Dans le cas de php, si vous désirez ajouter un préfixe et / ou un suffixe aux caractères de votre code aléatoire, modifier la dernière ligne du script comme suit :
ff_setValue('ticket', 'prefixe_'. $token .'_suffixe'); // prefixe_ et _suffixe peuvent être adaptés
Bien entendu, n’omettez pas d'insérer la valeur de ce champ dans la notification pour le réceptionniste des informations du ticket ainsi que dans le mail de confirmation envoyé à l'utilisateur afin de le rappeler dans les futures correspondances.
Vous pouvez, à loisir, tester ci-dessous.
À chaque nouvelle actualisation de la page, un code aléatoire différent composé de Minuscules, majuscule et chiffres sera généré.
Prérequis : html, css, utilisation de l'inspecteur du navigateur