Installation

- plugin balise_session
- Téléchargez, dézippez dans le répertoire
plugins/de votre site et activez le plugin Balise Session
- Téléchargez l’archive ci-contre,
- 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}>
où 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>


plugin balise_session
Vos commentaires
# Le 7 janvier 2010 à 17:53, par Mello
En réponse à : Balise #SESSION
Existe-t-il une balise #session avec SPIP v2 ?
# Le 7 janvier 2010 à 18:03, par cam.lafit
En réponse à : Balise #SESSION
Bonjour
Cette page devrait vous intéresser : http://www.spip.net/fr_article3979.html
# Le 7 janvier 2010 à 18:50, par ?
En réponse à : Balise #SESSION
Regarde le début de l’article !
# Le 31 mars 2011 à 16:22, par tetue
En réponse à : Balise #SESSION
Zut, je viens de me faire avoir pareillement ! Il ne faudrait pas diffuser ce plugin dans le chargeur auto de plugin des versions SPIP 2.
# Le 31 mars 2011 à 16:41, par _Eric_
En réponse à : Balise #SESSION
A priori il n’est plus dans le flux.
# Le 5 février 2009 à 05:05, par livier
En réponse à : Balise #SESSION
J’utilisais ce plugin en appelant dans mes squelettes quelque chose de la forme :
<INCLURE(session.php){session}{fond=boite_session}>Je comprend que le plugin n’est plus nécessaire avec SPIP2, mais mon INCLURE ne donne plus rien non plus.
Quelle est la nouvelle approche ?
# Le 5 février 2009 à 10:29, par cam.lafit
En réponse à : Balise #SESSION
Bonjour
Cette contribution n’est plus necessaire en SPIP2 car cela fait parti du noyau. Il suffit maintenant d’utiliser
#SESSIONet#SESSION_SET.Il y a des bouts de documentation sur http://www.spip.net/fr_article3979.html (publié) et http://www.spip.net/ecrire/?exec=ar... (article en cours de rédaction)
# Le 10 février 2009 à 18:30, par livier
En réponse à : Balise #SESSION
A toutes fins utiles pour autrui, l’adaptation à faire était on ne peux plus simple dans mon cas :
<INCLURE{fond=boite_session}>fonctionne. J’ai juste enlevé(session.php){session}pour voir ... et ça a marché.J’espère que ce n’est pas un vilain hack qui me jouera des tours un jours ! Validation des programmeurs appréciée ... ;-)
# Le 12 février 2009 à 10:01, par echo
En réponse à : Balise #SESSION
Oui, mais il faut être sur que tu testes que la session existe avant d’envoyer la page ! Donc bien utiliser
#SESSION. Par exemple, si on veut afficher une noisette « reserver_a_admin.html » lorsque le statut de la session de l’internaute est administrateur il faut faire en SPIP2 :# Le 12 février 2009 à 14:25, par livier
En réponse à : Balise #SESSION
Dans mon cas la noisette comprend elle même les test de session pour afficher soit le formulaire de connexion et le formulaire d’inscription au site, soit les identifiants de la personne connectée.
En tout cas ça marche pour moi et j’espére que ce sera clair pour les autres. Merci
# Le 31 décembre 2008 à 09:42, par tiamat59
En réponse à : Balise #SESSION
Bonjour,
J’ai un petit souci quand je veux activer le plugin session il me dit qu’il faut être en version 1.9 ou 2.0 minimum
Hors je suis en version 2.0.2 j’ai réinstaller tous 2 fois.
Je ne comprend pas, est un problème connu ?
# Le 31 décembre 2008 à 10:03, par ventrea
En réponse à : Balise #SESSION
Regarde bien le texte en spip 2 la balise session est incorporé dans le core tu n’as pas besoin de ce plugin.
a+
# Le 1er février 2009 à 19:52, par aRTHEGONe
En réponse à : Balise #SESSION sur SPIP 2.0
Il existe une explication simple sur l"utilisation de la balise SESSION avec des affichage si connecté ou non.
http://superpratix.com/?Le-filtre-ou-appeller-SIOUI-SINON
# Le 7 janvier 2008 à 11:52, par max
En réponse à : Fatal error : Call to undefined function spip_unlink()
Lors de la première recherche effectuée via le moteur de mon site, il y a souvent un plantage, avec l’erreur suivante :
Fatal error : Call to undefined function spip_unlink() in /var/www/www.termelleries.fr/plugins/balise_session/public/cacher.php on line 163
Si une nouvelle recherche est effectuée, il n’y a plus de plantage.
Quelqu’un a t il déjà eu ce bug ?
Merci beaucoup
# Le 25 février 2008 à 10:54, par livier
En réponse à : Fatal error : Call to undefined function spip_unlink()
J’utilisais le plugin sans problème apparent, mais j’ai obtenu le même message quand j’ai voulu utiliser ’Gribouille’ .17116
- SPIP 1.9.2b [10268]
- Balise session jeudi 29 novembre 2007, 00:03:58 (UTC+0100)
L’erreur apparait à l’appel de la rubrique gribouillable, et disparait quand on désactive le plugin « session ».
J’espère avoir fait avancer le chmillblick ;-)
# Le 30 septembre 2008 à 13:30, par joz
En réponse à : Fatal error : Call to undefined function spip_unlink()
Exactement le même erreur chez moi :
Fatal error : Call to undefined function spip_unlink() in /var/www/mon_chemin/plugins/balise_session/public/cacher.php on line 168
SPIP 1.9.2e SVN [12735]
Balise Session Version : 1.0 | stable
Je n’ai pas ce problème sur tout mes sites qui emploient Balise Session. Est-ce que ça serait à cause d’une incompatibilité avec un autre plugin ? Mais alors lequel ?
J’employe le Couteau Suisse, Formulaires&Tables, Lecteur Multimédia, Langue préférée par l’internaute, Corbeille, Article PDF et
Imprimer document.
Une idée ?
S’il y aurait moyen d’éliminer ce bug ça serait trop génial ...
à bientôt
Joz
# Le 2 septembre 2008 à 10:13, par joz
En réponse à : Balise #SESSION
Bonjour,
’<’INCLURE(session.php)...’>’ fonctionne bien, mais avec la balise #INCLURE, (session.php) n’a pas l’air de marcher.
Un erreur m’est retourné :
Est-ce qu’il y a un astuce à connaitre ou est-ce qu’il faut employer ’<’INCLURE...’>’ ?
merci et bonnes salutations
joz
ps : ignorez les ’ dans mon message, c’est juste pour afficher les ’<’ et ’>’ ;-)
# Le 2 septembre 2008 à 10:50, par ?
En réponse à : Balise #SESSION
Salut,
on ne peut pas passer par un script perso pour faire un
#INCLURE, on ne peut le faire qu’avec<INCLURE(xxx.php)>.Le principe de la balise
#SESSION, c’est de faire un cache « personnel » (le cache fabriqué pour l’auteur 1 ne doit pas être donné à l’auteur 2), d’où l’intérêt d’isoler au maximum ce qui est personnalisé et d’exploiter un cache général pour tout le reste.Le principe de
#INCLURE, c’est de gérer le contenu (cache) de cet inclure directement dans le cache englobant (qui lui ne dépend pas de l’utilisateur), pour éviter un assemblage de petits fichiers.Les deux approches sont donc par nature incompatibles.
Si on laissait la mécanique se dérouler, on enverrait potentiellement à l’auteur 1 à l’auteur 2.
Ca serait éventuellement possible si le cache englobant était lui meme personnalisé (contenant
#SESSION), mais il faudrait alors faire passer le contenu de la session dans le contexte de #INCLURE (un genre de#INCLURE{fond=xxx}{session}, mais comme c’est un tableau, je ne pense pas que ca marche)J’espère que ce que je raconte est compréhensible...
@++
# Le 2 septembre 2008 à 11:16, par joz
En réponse à : Balise #SESSION
Grand merci pour ton explication bien compréhensible.
à bientôt
joz
# Le 20 juillet 2007 à 15:15, par zerocool
En réponse à : Balise #SESSION
rebonjour
est ce qu’avec ce plugin on peut creer un genre d’espace membre comme il y a beaucoup sur les sites c’est a dire que la personne (visiteur) identifié (connecté) peut aller sur une page pour y modifier ses infos et les autres visiteurs, redacteurs... peuvent voir les infos de n’importe qui sans possibilité de les modifier ?
Merci
# Le 20 juillet 2007 à 16:36, par ?
En réponse à : Balise #SESSION
Oui.
De rien. :)
# Le 20 juillet 2007 à 16:57, par zerocool
En réponse à : Balise #SESSION
bon pour modifier ses informations quand on est connecté ca je sais le faire suffit d’utiliser le crayon mais comment les visiteurs peuvent consulté les infos de n’importe quel membre inscrit (visiteur,redacteur,admin) ?
# Le 20 juillet 2007 à 22:13, par zerocool
En réponse à : Balise #SESSION
dommage qu’on ne peut pas mettre un champ extra dans une balise session ca aurait etait excellent
# Le 27 décembre 2007 à 15:33, par Joker
En réponse à : Pointer sur la page « admin_plugins »
Depuis l’installation de la balise SESSION, les rédacteurs et les administrateurs restreints ne peuvent pas utiliser l’espace privé car la redirection systèmatique est vers la page « plugins » et le message dit « vous n’avez pas droit à l’accès ». il leur est donc impossible de créer un article ou autre chose dans l’espace privé.
Quant au statut « administrateur », tout va bien.
Je décoche le plugin SESSION. Tout redevient normal.
j’utilise 1.9.2 c et le plugin « acces groupes ».
Merci de votre aide.
# Le 28 décembre 2007 à 17:48, par philou
En réponse à : Pointer sur la page « admin_plugins »
Même problème : plugin utilisés : session + accès restreint + autorité
# Le 3 janvier 2008 à 20:48, par James
En réponse à : Pointer sur la page « admin_plugins »
Joker, philou, mea culpa, un soucis dans la génération du zip.
Ce sera corrigé sous peu, mais pour celles et ceux qui ont installé le plugin, il leur faudra supprimer les fichiers suivants :
balise_session/public/assembler.phpbalise_session/public/cacher.phpbalise_session/public/references.phpet ça devrait rouler.
# Le 4 janvier 2008 à 01:03, par Cedric Morin
En réponse à : Pointer sur la page « admin_plugins »
Pour être complet les 3 fichiers ci-dessus permettent de gérer la balise #SESSION aussi dans les modèles, comme sur la version SPIP de développement. Il est donc mieux de les garder, mais il est vrai qu’ils déclenchent le bug dans l’espace privé.
Pour corriger le bug il faut donc ajouter
dans le fichier options_session.php du plugin.
Je blanchis James par la même occasion car c’était moi le coupable !
# Le 4 janvier 2008 à 14:49, par Joker
En réponse à : Pointer sur la page « admin_plugins »
Après l’ajout par Cédric, ça roule bien. merci bcp.
# Le 20 janvier 2008 à 23:17, par philou
En réponse à : Pointer sur la page « admin_plugins »
idem merci !!
# Le 18 février 2008 à 13:53, par Joker
En réponse à : Pointer sur la page « admin_plugins »
Bonjour,
Je viens de me rendre compte qu’il y a un autre problème paru depuis que le passage à l’espace privé est réglé. Avec le plugin « acces groupes », j’ai donné l’accès restreint aux rédacteurs qui peuvent quand même lire les articles non autorisés. Je suppose que votre ligne ajoutée annule l’interdiction, non ?
Merci de vérifier si c’est vrai.
# Le 14 avril 2008 à 20:54, par Julien
En réponse à : Balise #SESSION
Et comment faire pour lire cette session depuis un script PHP indépendant de SPIP ??
Je souhaite savoir dans ce script php si l’internaute est connecté ou non à l’admin de SPIP.
Merci de votre aide
# Le 1er février 2008 à 16:05, par ?
En réponse à : Balise #SESSION pour remplacer $auteur_session
Je comprends bien l’utilité d’une telle balise, cependant je n’arrive pas à remplacer le code qui est ajouté sur chaque page du squelette afin que le site soit fermé aux personnes non connectées.
<?phpif (($auteur_session) {
?>
Un indice serait le bienvenu, merci par avance.
# Le 3 février 2008 à 11:59, par all sécu
En réponse à : Balise #SESSION pour remplacer $auteur_session
Tu y est presque, voici la syntaxe correcte :
<?php if ($auteur_session) { ?>
blabla si conecté
<?php } else { ?>
[(#LOGIN_PUBLIC)]
<?php } ?>
# Le 4 février 2008 à 08:56, par ?
En réponse à : Balise #SESSION pour remplacer $auteur_session
Je pensais justement que le plugin SESSION permettait de remplacer le php pour définir si l’utilisateur était connecté ou pas, et que cela pouvait être appliqué à toutes les pages.
# Le 4 février 2008 à 09:09, par James
En réponse à : Balise #SESSION pour remplacer $auteur_session
Oui, il permet de remplacer le php :
[(#SESSION{id_auteur}|?{' '})#INCLURE{fond=article-autorise}
]
[(#SESSION{id_auteur}|?{'',' '})
#LOGIN_PUBLIC
]
mais alors, rien n’empêcherait un visiteur non authentifé d’appeler l’adresse
spip.php?page=article-autorisel’objectif de #SESSION est de différencier les pages en fonction du visiteur et non de déterminer les persmissions. Pour cela, il faut voir du coté des plugins d’accès restreint... et de choisir un de ceux qui peut s’associer avec #SESSION
# Le 4 février 2008 à 10:22, par ?
En réponse à : Balise #SESSION pour remplacer $auteur_session
Ok.
Merci pour ces précisions.
# Le 4 février 2008 à 10:29, par Beurt
En réponse à : Balise #SESSION pour remplacer $auteur_session
Il y a quand même une possibilité de remplacer le PHP par #SESSION en contournant un peu (bref un hack un peu sale) :
D’abord on crée une variable qu’on réutilisera :
Ensuite on va réutiliser
rubrique_pour_testerpour conditionner notre squelette à la présence d’une session :Pour que ça fonctionne, je pense que
#CACHE{0}est indispensable (James, tu confirmes ?).On peut décliner pas mal ce genre de boucles conditionnelles en changeant
Par la condition que vous voulez tester (#ENV, diverses balises, etc.). On peut aussi faire en sorte que la BOUCLE ne serve pas qu’à tester une variable en ne choisissant pas la rubrique de « rubrique_pour_tester » au hasard, mais en choisissant celle que l’on va utiliser (ou bien faire une boucle conditionnelle, sur des MOTS, des ARTICLES, des BREVES... Bref, ce que vous voulez car c’est très flexible...)
C’est très pratique, et permet d’éviter le PHP...
# Le 4 février 2008 à 10:35, par James
En réponse à : Balise #SESSION pour remplacer $auteur_session
#CACHE{0}est à éviter. Le but essentiel du plugin et de la balise intégré en version de développement, c’est d’éviter ça justement.Sinon, bien vu pour le reste :)
# Le 4 février 2008 à 11:44, par Beurt
En réponse à : Balise #SESSION pour remplacer $auteur_session
Ok, donc le squelette proposé ci-dessus doit être dans une noisette inclue avec un
<INCLURE>dynamique ? Ou est-ce qu’on peut l’appeler directement par spip.php ?page=ma_page_avec_boucle_conditionnelle (sans que le cache ne donne la page de quelqu’un d’autre) ? Il y a là quelque chose que je n’ai pas bien compris avec la balise #SESSION et le cache...# Le 4 février 2008 à 16:59, par Stephane
En réponse à : Balise #SESSION pour remplacer $auteur_session
Il suffit de mettre les squelettes inclus dans un sous repertoire pour qu’ils ne soient pas appelables directement.
Et l’idéal, c’est de mettre la balise session DANS l’inclure, pour que son cache soit « personnel », mais pas dans le squelette appelant, qui lui peut utiliser un cache général.
par exemple en faisant :
<INCLURE{fond=bloc/article-autorise}{id_article}>et dans /squelettes/blocs/article-autorise.html :
<BOUCLE_A(ARTICLES){id_article=(#SESSION{id_auteur}|?{#ID_ARTICLE,0})}>...
</BOUCLE_A>
#LOGIN_PUBLIC
<//B_A>
(pas testé mais c’est pour l’idée générale)
@++
# Le 4 février 2008 à 17:03, par James
En réponse à : Balise #SESSION pour remplacer $auteur_session
ça me fait penser que ce serait pas bête de filer des pages 401.html et 403.html en plus de la 404... pas testé non plus :P
# Le 4 février 2008 à 17:41, par Stephane
En réponse à : Balise #SESSION pour remplacer $auteur_session
Pour la 403, amha, ca depend du squelette.
Tout le monde ne souhaite pas forcement exposer l’information que le contenu existe en accès restreint.
Mais dans la dist, il pourrait y avoir :
<BOUCLE_art(ARTICLES){id_article}>...
</BOUCLE_art>
<BOUCLE_art_erreur(ARTICLES){id_article}{statut?}>
[(#INCLURE{fond=403}{id_article})]
</BOUCLE_art_erreur>
[(#INCLURE{fond=404}{id_article})]
<//B_art_erreur>
<//B_art>
mes 2 sous.
# Le 4 février 2008 à 17:55, par Stephane
En réponse à : Balise #SESSION pour remplacer $auteur_session
Non, je pense que ca marche avec
#INCLUREaussi (1.9.2d et SVN) et bien sur sans#CACHE{0}, mais dans ce cas, c’est le cache englobant qui sera « personnel », ce qui est dommage puisque seul le contenu de l’inclusion change d’un utilisateur à l’autre.pour ce qui est de l’appel direct, avec #INCLURE contenant
#SESSION, c’est comme si#SESSIONétait directement dans le squelette, donc un cache différent pour chaque auteur authentifié (on devrait d’ailleurs plutôt dire « sessionné » car de mémoire, un post dans un forum va créer une session et donc l’utilisateur aura un cache spécifique quand#SESSIONest présent)Je ne sais pas si tout a été backporté dans la 1.9.2 (Cedric tu confirmes ou je dis des betises ?)
# Le 12 octobre 2007 à 12:13, par Cédric Couvrat
En réponse à : Balise #SESSION et les autres auteurs connectés
Bonjour,
Comment afficher la liste des auteurs (et/ou administrateurs) connectés au site,
comme on peut le voir dans l’espace privé ("actuellement en ligne).
Merci
# Le 12 octobre 2007 à 12:44, par James
En réponse à : Balise #SESSION et les autres auteurs connectés
Ce n’est pas le rôle de cette balise, qui par définition, n’affiche que du contenu lié au seul visiteur connecté et identifié. Il n’y a, à ma connaissance, pas de contribution récente et documentée sur ce sujet, mais il est possible que certains squelettes, notamment pour des forums, intègrent ce genre de fonctionnalité. Il serait bon dans ce cas, de la sortir de leur contexte pour en faire une contribution autonome et réutilisable.
# Le 11 octobre 2007 à 16:58, par artisan-multimedia
En réponse à : Balise #SESSION et les balise de langue
Bonjour,
Lorsque je conditionne l’affichae de texte en testant la balise session, j’ai un léger souci : c’est la balise langue qui s’affiche, et pas sa traduction : c’est bien dommage.
Un exemple :
[(#SESSION{id_auteur}|?{'<a href="spip.php?page=spip_login" class="petit" alt="Proposez un nouvel article"><:proposer_article:></a> |
me laisse <:proposer_article :> au lieu de sa traduction. Je pense que ce serait une bonne correction pour ce plugin qui, par ailleurs est très bien :).
# Le 11 octobre 2007 à 17:08, par James
En réponse à : Balise #SESSION et les balise de langue
La bonne écriture :
[<!-- cet(#SESSION{id_auteur}|?{' espace '})est accessible aux seuls visiteurs authentifiés ;)-->
<a href="#URL_PAGE{truc}"><:texte:></a>
]
Il ne faut pas (enfin, on ne peut pas) mettre du code SPIP dans les paramètres du filtre conditionnel.