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 ?
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.
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’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.