fonction session_get(login) et migration SPIP3

bonsoir,

tentant d’utiliser un plugin développé initialement pour spip2 sur un site spip3.2, je tombe sur une erreur liée à un test dans un formulaire pour savoir si l’utilisateur est ou non connecté. Le comportement du formulaire en dépend.

Le formulaire qui fonctionnait contenait l’élément suivant.

<div class='editer saisie_adresse_email[ (#ENV*{erreurs}|table_valeur{adresse_email}|oui)erreur]<?php if (!session_get('login')) echo ' obligatoire';?>'>
				<label for="session_email">Courriel *</label>
				[<span class="erreur_message">(#ENV*{erreurs}|table_valeur{adresse_email})</span>]
				<input type="text" autocomplete='off' required="required" class="text" name="adresse_email" id="adresse_email" value="#ENV{adresse_email}" size="30" />
			</div>

IL ne fonctionne plus sur le site en spip3.2 et le formulaire plante l’affichage de la page, juste avant la ligne qui teste le login…

Est-ce lié à un changement interne de spip ?

merci d’avance de toute aide

Il y a un message plus détaillé sur la nature de l’erreur ou juste une erreur squelette lambda ?

Il manque peut-être un include_spip('inc/session'); en amont.
Sinon remplacer le php par la balise [(#SESSION{login}|oui)obligatoire]

Cela dit il y a potentiellement un autre problème : là ça ajoute juste une classe « obligatoire » sous certaines conditions, mais l’attribut « required » est présent dans tous les cas.

merci
en cherchant dans les logs, je m’aperçois qu’il y a un formulaire.log avec une répétition de « formulaire signe mais pas de session ».
j’avoue que je ne sais pas quelle conclusion en tirer… j’essaie en tout cas la balise…

la balise ne change rien, et j’ai bien à chaque essai une erreur dans le log formulaire
soit (formulaire signe mais pas de session)
soit (formulaire signe mais ne correspond pas a la session)

et le formulaire fonctionne en étant connecté à spip, et ne fonctionne pas sinon

Regarde peut-être dans ce fil formulaire_.php entre SPIP 4.0.0 et SPIP 4.0.1 un problème similaire y était abordé.

Ça serait pas dans un #INCLURE au lieu d’un <INCLURE, ou encore dans un modèle ?

problème résolu par camille, version mise à jour dans la forge

le test session_get(‹ login ›) a été déplacé dans le php, et repris avec une variable d’environnement dans le squelette.