Balise #SESSION

Attention, page complètement obsolète, qui devrait être dépubliée : liens brisés, etc.

Attention, SPIP 2


Ce plugin ne doit pas être utilisé avec les versions récentes de spip
(notamment à partir de SPIP 2) car la balise SESSION a été incorporée dans le code du noyau de SPIP. Voir l’article sur #SESSION sur spip.net.

La balise #SESSION fonctionne comme #CONFIG à ceci près qu’elle s’appuie sur le tableau associatif $auteur_session. Le paramètre passé en argument détermine la valeur de session à afficher. Pour avoir une liste exhaustive des valeurs possible, consultez la doc de la fonction ajouter_session

Installation

  • Récuperez le code à partir du grenier de la zone
  • décompressez là dans le répertoire plugins/ de votre site,
  • dans la page de gestion des plugin de votre site, activez le plugin Balise Session

Vous pourrez accéder à cette même documentation sur votre propre site (spip.php?page=session) avec des exemples interactifs.

Principe

Pour reconnaître le visiteur authentifié, on s’appuie sur le mécanisme de session de SPIP. Toutefois, comme cette valeur est affichée dans un squelette, on doit aussi tenir compte du cache et empêcher que les données d’un visiteur soient utilisée par les suivants, le temps de la durée de vie de la page.

Deux moyens peuvent être employés :

  • Définir à 0 la durée de vie du cache de chaque page où on affichera ou testera le contenu de la balise #SESSION. C’est une mauvaise idée en matière de performance globale pour le site
  • Créer une page de cache de chaque page pour chaque visiteur authentifié. Ainsi, les visiteur accèdent à des pages distinctes calculées moins souvent. C’est le principe retenu dans cette page.

On introduit donc, en plus de la balise, un script session.php, appelable par la balise standard <INCLURE()>. Ce script est un clone du script standard de spip (spip.php) à ceci-près qu’il défini un marqueur de squelette basé sur l’identifiant du visiteur, s’il est défini.

Appel spécifique des noisettes

On fera appel à la balise #SESSION dans des squelettes inclus (qu’on appelle aussi noisettes...)

<INCLURE(session.php){fond=page_speciale}>

page_speciale.html contiendra l’un au l’autre des exemples du plugin, ou de leurs combinaisons, ou d’autres éléments issus de cette page de démonstration, ou bien encore, de votre propre cru ! :D

Gestion de valeurs supplémentaires

Il est possible de gérer des valeurs supplémentaires à celles contenues dans le tableau $auteur_session. Pour cela, il faut ajouter le paramètre {session} à l’appel de squelettes inclus. Dès lors, la balise #SESSION s’appuiera aussi sur le tableau associatif $_SESSION php standard (cf. Le support des sessions de PHP).

Exemple : <INCLURE(session.php){session}{fond=boite_session}>

Ce plugin introduit pour ces valeurs, une action permettant de créer/affecter une valeur en lui précisant un nom, ou de vider cette valeur. Pour faire appel à cette action, on utlisera soit un formulaire ad hoc, soit, dans ce type précis de noisettes, la balise #URL_ACTION_AUTEUR de la manière suivante :

<a href="[(#URL_ACTION_AUTEUR{session,[(#ENV{session})]-affecter-nom-valeur,url})]">
texte du lien
</a>

ou

  • nom sera le code employé pour restituer la valeur via la notation #SESSION{nom},
  • valeur pourra être une balise spip ou une constante,
  • url, l’adresse de destination du lien, #SELF ou tout autre adresse imaginable.

ou bien

<a href="[(#URL_ACTION_AUTEUR{session,[(#ENV{session})]-vider-nom,url})]">
texte du lien
</a>

Démonstration

spip-zone.info