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

<?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

LoadingChargement en cours