Tester si un utilisateur est authentifié

Bonjour,
Je tourne en rond sur un problème que je pensais simple, je dois avoir un neurone qui a disparu …
Je souhaite tester si un utilisateur est connecté ou pas, avec le bon login. Apparemment je n’ai pas de problème pour détecter qu’il est connecté avec un login (le bon) ou un autre (le mauvais), mais je n’arrive pas à traiter le cas ou l’utilisateur n’est pas connecté, #SESSION ne retourne rien et je n’arrive pas à détecter ce rien …
J’ai écrit ce test, je ne comprends pas pourquoi la variable créée ne retourne pas « nolog » quand l’utilisateur n’est pas connecté:

#SESSION{login}
[(#SESSION{login}|!=={''}|?{
	#SET{lelogin,#SESSION{login}}
	,
	#SET{lelogin,nolog}
})]
#GET{lelogin}

J’ai aussi essayé le test #SESSION{login}|? (il faut inverser le traitement), idem, j’ai fait quelques variantes sans succès, je suppose que cela signifie que #SESSION n’existe pas (ce qui est différent de « est vide ») et que donc le test ne marche pas, donc je me demandais comment procéder pour ce genre de chose ?

Je dirais

[(#SESSION{id_auteur}|oui)Je suis connecter]

mais attention au cache du coup

de ce que j’ai pu en comprendre, pour les perfs, il vaut mieux que les squelettes qui font ce type de tests soient dans des inclure car chaque squelette contenant un #SESSION aura un ficher de cache unique par auteur, donc autant que ce fichier soit le plus petit possible.

Donc un inclure avec uniquement ton test vaut mieux que la page entière qui le contient.

Si jamais, il y a aussi Plugin 'macrosession' : usage optimisé et extension des données de session - SPIP-Contrib

Une autre bonne lecture à ce sujet Du php dans le squelette à la place de #SESSION ou #CACHE 0 - SPIP-Contrib :slight_smile:

1 « J'aime »

Bonjour,
En fait c’est la phrase « attention au cache du coup » qui m’a interpelé, bien évidemment je vidais le cache à chaque test, mais je testais « connecté » sur Firefox (ou j’ai un vrai outil, de vidage de cache) et non connecté sur Ulaa (un navigateur Chrome) ou je n’ai pas ce genre d’outil et il semblerait que ce soit un vrai vidage de cache de Chrome qui ait débloqué la situation.
Merci pour la piste !
Pierre

@b_b et @jeanmarie merci pour les références.
Pierre