Balise SPIP de valeur aléatoire pour ID

Bonjour,

Existe-t-il une balise SPIP pour générer une chaine aléatoire à
l’intérieur d’un fichier de squelette, à suffixer à un ID d’élément du
DOM, pour qu’à l’appel suivant du même fichier squelette sur la même
page, on ait un autre ID unique ?

Sinon #SET{ #unique, rand de php } ?

Merci


Stéphane
17 Charente-Maritime

Bonjour,

Trouvé un élément de réponse ici :
https://contrib.spip.net/Astuces-courtes-pour-SPIP

Merci

Pourrais-tu préciser lequel ? (netiquette, fournir la réponse à la question posée)

Bonjour,

Eh bien sur le sujet, dans cette page, si je cherche le mot « aléatoire », je ne trouve que :

Générer un nombre entier aléatoire
#SET{hasard,#VAL{1}|rand{6}}

Pour l’id d’un élément du DOM, tu peux te pencher sur la fonction php uniqid qui est plus adaptée à ce cas de figure.

Exemples :

#SET{hasard,#REM|uniqid}
#SET{hasard,#VAL{un_prefixe}|uniqid}
#SET{hasard,#VAL{un_prefixe}|uniqid{#EVAL{true}}}

Intéressant.

basé sur la date et heure courante en microsecondes.

Est-ce que l’on est sûr que 2 appels de cette fonction dans le squelette de ma page ne seront pas dans la même microseconde ?

Est-ce que l’on est sûr que 2 appels de cette fonction dans le squelette de ma page ne seront pas dans la même microseconde ?

Non :slight_smile:
Mais ça ne devrait pas être un problème : les squelettes sont mis en cache, la fonction n’est pas appelée à chaque visite de la page.

Ces ids aléatoires sont pour quel usage précisément, au fait ? Du javascript ?

Le 01/09/2021 à 09:24, tcharlss via Discuter de SPIP a écrit :

Est-ce que l’on est sûr que 2 appels de cette fonction dans le squelette de ma page ne seront pas dans la même microseconde ?

Non

Un peu quand même : deux uniqid dans le même squelette, ça signifie deux uniqid dans le PHP compilé à la fin, PHP qui est exécuté séquentiellement, et ça dépend de la machine bien sûr, mais sur un truc classique, il est très très improbable que deux uniqid renvoient la même valeur. On peut aussi utiliser le 2ème paramètre entropy pour augmenter.


RastaPopoulos

Au cas où ça pourrait servir (j’ai un tas d’exemples, avc JS aussi, si ça intéresse quelq’un, je les utilise pour donner patte blanche à des styles et scripts inline non autorisés par CSP). Il y a aussi (sur apache)

<?php echo $_SERVER['UNIQUE_ID'];?>

Et maintenant j’utilise

<?php echo $_SERVER['CSP_NONCE'];?>

mais il faut pouvoir configurer apache. Ensuite on les ajoute aux scripts, styles, n’importe.

J’espère que ce n’est pas trop off topic ‡-]

J’ai créé un type d’entrées Bootstrap dropdown-menu, qui comprend un ID et une référence à cet ID.

Et comme j’appelle un menu 2 fois dans ma page (2 fois le même squelette de menu), les ID sont en doublon. J’ai donc rajouté un uniqid sur l’ID dans le squelette.