Ruby - Sessions CGI

Une CGI :: Session maintient un état persistant pour les utilisateurs Web dans un environnement CGI. Les sessions doivent être fermées après utilisation, car cela garantit que leurs données sont écrites dans le magasin. Lorsque vous avez définitivement terminé une session, vous devez la supprimer.

#!/usr/bin/ruby

require 'cgi'
require 'cgi/session'
cgi = CGI.new("html4")

sess = CGI::Session.new( cgi, "session_key" => "a_test", "prefix" => "rubysess.")
lastaccess = sess["lastaccess"].to_s
sess["lastaccess"] = Time.now
if cgi['bgcolor'][0] =~ /[a-z]/
   sess["bgcolor"] = cgi['bgcolor']
end

cgi.out {
   cgi.html {
      cgi.body ("bgcolor" => sess["bgcolor"]) {
         "The background of this page"    +
         "changes based on the 'bgcolor'" +
         "each user has in session."      +
         "Last access time: #{lastaccess}"
      }
   }
}

Accéder à "/cgi-bin/test.cgi?bgcolor = red" rendrait la page rouge pour un seul utilisateur pour chaque hit successif jusqu'à ce qu'un nouveau "bgcolor" soit spécifié via l'URL.

Les données de session sont stockées dans un fichier temporaire pour chaque session, et le paramètre de préfixe attribue une chaîne à ajouter au nom du fichier, ce qui facilite l'identification de vos sessions sur le système de fichiers du serveur.

CGI :: Session manque encore de nombreuses fonctionnalités, telles que la capacité de stocker des objets autres que des chaînes, le stockage de session sur plusieurs serveurs.

Classe CGI :: Session

Une CGI :: Session maintient un état persistant pour les utilisateurs Web dans un environnement CGI. Les sessions peuvent résider en mémoire ou être stockées sur disque.

Méthodes de classe

Ruby class Class CGI :: Session fournit une méthode de classe unique pour créer une session -

CGI::Session::new( cgi[, option])

Démarre une nouvelle session CGI et renvoie l'objet CGI :: Session correspondant. option peut être un hachage d'option spécifiant un ou plusieurs des éléments suivants -

  • session_key- Nom de la clé contenant l'ID de session. La valeur par défaut est _session_id.

  • session_id- ID de session unique. Généré automatiquement

  • new_session- Si vrai, créez un nouvel identifiant de session pour cette session. Si faux, utilisez une session existante identifiée par session_id. En cas d'omission, utilisez une session existante si elle est disponible, sinon créez-en une nouvelle.

  • database_manager- Classe à utiliser pour enregistrer les sessions; peut être CGI :: Session :: FileStore ou CGI :: Session :: MemoryStore. La valeur par défaut est FileStore.

  • tmpdir - Pour FileStore, répertoire des fichiers de session.

  • prefix - Pour FileStore, préfixe des noms de fichiers de session.

Méthodes d'instance

N ° Sr. Méthodes et description
1

[ ]

Renvoie la valeur de la clé donnée. Voir l'exemple ci-dessus.

2

[ ]=

Définit la valeur de la clé donnée. Voir l'exemple ci-dessus.

3

delete

Appelle la méthode de suppression du gestionnaire de base de données sous-jacent. Pour FileStore, supprime le fichier physique contenant la session. Pour MemoryStore, supprime la session de la mémoire.

4

update

Appelle la méthode de mise à jour du gestionnaire de base de données sous-jacent. Pour FileStore, écrit les données de session sur le disque. N'a aucun effet avec MemoryStore.