Les sessions sous TYPO3 (plugin frontend)

Publié le Mis à jour le

Je travaille actuellement sur un projet avec des sessions sous TYPO3. L’utilisation de sessions me permet de stocker des informations sur un utilisateur et de les conserver tout au long de sa navigation. Un utilisateur peut être connecté à un site en tant que user frontend ou bien un simple utilisateur qui ne dispose pas de compte. Il peut arriver que le site ne dispose pas d’espace privé. Dans ce cas, les données d’une session sont conservée 24 heures ou bien lorsqu’un utilisateur ferme son navigateur.

Lorsque l’on souhaite conserver en session des données, tout dépendra justement du type d’utilisateur concerné.
Voici comment stocker des données :

$GLOBALS["TSFE"]->fe_user->setKey($type, $var, $content);
$GLOBALS["TSFE"]->storeSessionData();

$type : espace de données – il s’agit ici de ‘user’ ou bien de ‘ses’. Dans l’exemple que je vais présenter ici, l’utilisateur ne peut pas se connecter à un espace privé et donc, ses données seront conservées temporairement. On utilisera ‘ses’.
$var est le nom de la variable que je vais stocker en session. Il est ainsi possible de stocker plusieurs variables.
$content contient les données à conserver. On utilisera un tableau, c’est d’ailleurs bien pratique.

Dans un plugin frontend, on va par exemple créer deux méthodes :
– une pour stocker les données de session
– une pour récupérer ces données

Désolé, mes commentaires sont en anglais 😉

Pour stocker les données :

/**
     * Call this function to store information is current session
     * Session are limited to 24 hours, remember !
     *
     * @param    string        $type: ‘ses’ or ‘user’
     * @param    string        $var: varname
     * @param    array        $content: the content we need to store
     * @return    [type]        nothing !
     */
    public function storeSessionValues($type, $var, $content) {
        // more info: http://typo3.org/documentation/document-library/references/doc_core_tsref/4.1.0/view/14/1/

        // Store data into session (ses)
        $GLOBALS["TSFE"]->fe_user->setKey($type, $var, $content);
        $GLOBALS["TSFE"]->storeSessionData();
    }

Pour les récupérer :

    /**
     * Retrieve user data from session
     *
     * @param    [type]        $type: ‘ses’ or ‘user’
     * @param    [type]        $var: varname
     * @return    [type]        array
     */
    public function getSessionValues($type, $var) {
        return $GLOBALS["TSFE"]->fe_user->getKey($type, $var);
    }

Pour utiliser ces fonctions, je vais initialiser mes tableaux :

$userData = array(); // données de l’utilisateur
$document = array(); // ce que je dois stocker

Ensuite, je récupére les données éventuelles

// Get user data from session
$userData = $this->getSessionValues(‘ses’, ‘documents’);

Si des données existe, je les rajoute à mon tableau multidimensionnel
// We get the existing items
if(!empty($userData)) {
              $document= $userData;
}

Je stocke mes données à conserver dans mon tableau

// Store data into a session
$document[$uid][‘data1’] = $var1;
$document[$uid][‘data2’] = $var2;
$document[$uid][‘data3’] = $var3;

$this->storeSessionValues(‘ses’, ‘documents’, $document);

Mes données sont en session dans un tableau qui s’appelle ‘documents’ 🙂
Je rappelle le lien vers la doc core.

Publicités

3 réflexions au sujet de « Les sessions sous TYPO3 (plugin frontend) »

    Ben a dit:
    03/11/2010 à 16:08

    Un article intéressant et très bien fait ! Merci 🙂

    Petite question, tu n’as pas parlé de suppression de session (excepté en fermant le navigateur ou au bout des 24h), quelle est la manipulation optimale pour ça ?

    J’ai lu sur un forum cette méthode :
    unset($session);
    $session = array();
    $GLOBALS[« TSFE »]->fe_user->setKey(‘ses’,’vars_session’,$session);
    $GLOBALS[« TSFE »]->storeSessionData();

    Mais il y a peut être mieux…

      Christian BELLET a répondu:
      21/11/2010 à 21:51

      Hello,
      Je remplace mon tableau de session par la valeur NULL
      Voilou 🙂

    Alice a dit:
    14/01/2011 à 13:21

    Bonjour Mr Christian,

    bonne et heureuse année 2011. Je suis débutante en typo3 et j’ai 3 questions svp:
    1- comment changer la langue (de l’anglais vers le francais) du formulaire d’inscription générée avec sr_fuser_register?
    2- Avant d’Accéder à la page d’inscription comment faire une redirection de lapage http vers https?
    3- Comment attribuer un temps de session à un utilisateur connecté?

    Merci pour votre aide, Alice

Les commentaires sont fermés.