English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
CGI::Session peut sauvegarder l'état de session persistant pour l'utilisateur et l'environnement CGI, après l'utilisation de la session, elle doit être fermée pour garantir que les données soient écrites dans le stockage. Lorsque la session est terminée, vous devez supprimer ces 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"]){ "L'arrière-plan de cette page" + "modifications basées sur le 'bgcolor'" + "chaque utilisateur a des sessions" + "Dernier accès : #{lastaccess}" } } }
Accéder à "/cgi-bin/test.cgi?bgcolor=red" ira vers la page de couleur de fond spécifiée.
Les données de session existent dans le répertoire temporaire du serveur, le paramètre prefix spécifie le préfixe de la session, qui servira de préfixe pour les fichiers temporaires. De cette manière, vous pouvez facilement identifier différents fichiers temporaires de session sur le serveur.
CGI::Session conserve l'état persistant de l'utilisateur avec l'environnement CGI. Les sessions peuvent être en mémoire ou sur le disque dur.
La classe Ruby Class CGI::Session fournit des méthodes simples pour créer une session:
CGI::Session::new( cgi[, option])
Activer une nouvelle session CGI et retourner l'objet CGI::Session correspondant. Les options peuvent être un dictionnaire optionnel, et peuvent être les valeurs suivantes :
session_key: Nom de clé pour sauvegarder la session, par défaut c'est _session_id.
session_id: ID de session unique. Généré automatiquement
new_session: Si c'est true, un nouveau Session id est créé pour la session actuelle. Si c'est false, l'identifiant de session existant est utilisé via session_id. Si ce paramètre est omis, une session existante est utilisée si elle est disponible, sinon une nouvelle session est créée.
database_manager: Classe utilisée pour stocker des sessions, peut être CGI::Session::FileStore ou CGI::Session::MemoryStore. Par défaut, c'est FileStore.
tmpdir: 对于 FileStore,为 session 的错误存储目录。
prefix: 对于 FileStore,为 session 文件的前缀。
序号 | 方法描述 |
---|---|
1 | [ ] 返回给定 key 的值。查看示例。 |
2 | [ ]= 设置给定 key 的值。查看示例。 |
3 | 删除 调用底层数据库管理的删除方法。对于 FileStore,删除包含 session 的物理文件。对于 MemoryStore,从内存中移除 session 数据。 |
4 | 更新 调用底层数据库管理的更新方法。对于 FileStore,将 session 写入到磁盘中。对于 MemoryStore则无效果。 |