SessionHandler::write
SessionHandlerInterface::close
Sessions
PHP Manual

# L'interface SessionHandlerInterface

(PHP 5 >= 5.4.0)

## Introduction

SessionHandlerInterface est une interface qui définit un prototype pour la création d'un gestionnaire de session personnalisé. Afin de passer un gestionnaire de session personnalisé à la fonction session_set_save_handler() en utilisant son invocation OOP, la classe doit implémenter cette interface.

Notez que ces méthodes sont destinées à être appelées de manière interne par PHP, et non depuis l'espace utilisateur.

## Synopsis de la classe

SessionHandlerInterface {
/* Méthodes */
abstract public bool close ( void )
abstract public bool destroy ( string `$session_id` )
abstract public bool gc ( string `$maxlifetime` )
abstract public bool open ( string `$save_path` , string `$name` )
abstract public string read ( string `$session_id` )
abstract public bool write ( string `$session_id` , string `$session_data` )
}

Exemple #1 Exemple avec SessionHandlerInterface

L'exemple qui suit propose un gestionnaire de stockage de sessions basé sur des fichiers, basiquement comme les sessions PHP fonctionnent en interne de manière native, avec le gestionnaire embarqué `files`. Cet exemple pourrait être transformé facilement pour utiliser une base de données.

Nous utilisons le style orienté objet avec session_set_save_handler() et nous enregistrons la fonction de fermeture grâce au paramètre de la fonction. C'est en général conseillé lorsque le gestionnaire de session est basé sur des objets.

`<?php
class MySessionHandler implements SessionHandlerInterface
{
private $savePath;
public function open($savePath, $sessionName)
{
$this->savePath = $savePath;
if (!is_dir($this->savePath)) {
mkdir($this->savePath, 0777);
}
return true;
}
public function close()
{
return true;
}
public function read($id)
{
return (string)@file_get_contents("$this->savePath/sess_$id");
}
public function write($id, $data)
{
return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
}
public function destroy($id)
{
$file = "$this->savePath/sess_$id";
if (file_exists($file)) {
unlink($file);
}
return true;
}
public function gc($maxlifetime)
{
foreach (glob("$this->savePath/sess_*") as $file) {
if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
unlink($file);
}
}
return true;
}
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
// enregistre/récupère des données avec $_SESSION`

## Sommaire

- SessionHandlerInterface::close — Ferme la session
- SessionHandlerInterface::destroy — Détruit une session
- SessionHandlerInterface::gc — Nettoie les vieilles sessions
- SessionHandlerInterface::open — Initialise la session
- SessionHandlerInterface::read — Lit les données de session
- SessionHandlerInterface::write — Ecrit les données de session

SessionHandler::write
SessionHandlerInterface::close
Sessions
PHP Manual