Sessions Ruby CGI


CGI::Session peut enregistrer l'état de session persistant pour l'utilisateur et l'environnement CGI. La session doit être fermée après utilisation. Cela garantit que les données sont écrites dans le stockage lorsque la session est terminée. besoin de supprimer les données.

#!/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" passera à la page avec la couleur d'arrière-plan spécifiée.

Les données de session existent dans le répertoire des fichiers temporaires du serveur. Le paramètre prefix précise le préfixe de la session, qui sera utilisé comme préfixe du fichier temporaire. De cette façon, vous pouvez facilement identifier les différents fichiers temporaires de session sur le serveur.


Classe CGI::Session

CGI::Session maintient un état persistant entre l'utilisateur et l'environnement CGI. Les sessions peuvent être en mémoire ou sur le disque dur.

Méthodes de classe

La classe Ruby Class CGI::Session fournit des méthodes simples pour créer une session :

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

Démarrer une nouvelle session CGI et renvoyer l'objet CGI:: Session correspondant . Les options peuvent être des hachages facultatifs et peuvent avoir les valeurs suivantes :

  • session_key : Nom de la clé pour enregistrer la session. La valeur par défaut est _session_id.

  • session_id : ID de session unique. Générer automatiquement

  • new_session : Si vrai, créez un nouvel identifiant de session pour la session en cours. Si faux, utilisez l'ID de session existant via session_id. Si ce paramètre est omis, une session existante est utilisée si elle est disponible, sinon une nouvelle est créée.

  • database_manager: Classe utilisée pour sauvegarder les sessions, qui peut être CGI::Session::FileStore ou CGI::Session::MemoryStore. La valeur par défaut est FileStore.

  • tmpdir : Pour FileStore, le répertoire de stockage des erreurs pour la session.

  • préfixe : Pour FileStore, c'est le préfixe du fichier de session.

Méthode d'instanciation

Numéro de série< /th>Description de la méthode
1
序号方法描述
1[ ]
返回给定 key 的值。查看实例。
2[ ]=
设置给定 key 的值。 查看实例。
3delete
调用底层数据库管理的删除方法。对于  FileStore, 删除包含 session 的物理文件。 对于 MemoryStore, 从内存中移除 session 数据。
4update
调用底层数据库管理的更新方法。 对于  FileStore, 将 session 写入到磁盘中。 对于 MemoryStore则无效果。
[ ]
Renvoie la valeur de la clé donnée. Voir des exemples.
2<🎜>[ ]=<🎜>
Définissez la valeur de la clé donnée. Voir des exemples.
3<🎜>delete<🎜>
Appelez la méthode delete de la gestion de base de données sous-jacente. Pour FileStore, supprimez le fichier physique contenant la session. Pour MemoryStore, supprimez les données de session de la mémoire.
4<🎜>update<🎜>
Appelez la méthode de mise à jour de la gestion de base de données sous-jacente. Pour FileStore, écrivez la session sur le disque. Cela n’a aucun effet sur MemoryStore.
<🎜>