Manuel PHP
Précédent |  | Suivant

# session_set_save_handler

(PHP 4 >= 4.0.0)

session_set_save_handler -- Définit les fonctions utilisateurs de stockage des sessions

## Description

``void session_set_save_handler` (string open, string close, string read, string write, string destroy, string gc)`

session_set_save_handler() définit les fonctions utilisateurs de stockage et chargement des sessions. Cela est particulièrement pratique pour spécifier une autre méthode de stockage que celle fournie en standard avec PHP. Notamment, il est possible de stocker les sessions dans une base de données.

> Note : Vous devez donner à l'option de configuration `session.save_handler` la valeur de `user` dans votre fichier `php.ini` pour que session_set_save_handler() soit effective.

L'exemple suivant fournit un exemple de stockage de session dans un fichier, similaire aux fonctions standards de PHP. Cet exemple peut être facilement étendu pour utiliser un stockage en base de données, en utilisant votre base préférée.

Exemple 1. Exemple avec session_set_save_handler()
    <?php
    function open ($save_path, $session_name) {
      global $sess_save_path, $sess_session_name;
      $sess_save_path = $save_path;
      $sess_session_name = $session_name;
      return(TRUE);
    }
    function close() {
      return(TRUE);
    }
    function read ($id) {
      global $sess_save_path, $sess_session_name;
      $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "r")) {
        $sess_data = fread($fp, filesize($sess_file));
        return($sess_data);
      } else {
        return("");
      }
    }
    function write ($id, $sess_data) {
      global $sess_save_path, $sess_session_name;
      $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "w")) {
        return(fwrite($fp, $sess_data));
      } else {
        return(FALSE);
      }
    }
    function destroy ($id) {
      global $sess_save_path, $sess_session_name;
      $sess_file = "$sess_save_path/sess_$id";
      return(@unlink($sess_file));
    }
    /***************************************************
     * ATTENTION - Vous devez implémenter une routine  *
     * d'entretien des sessions ici.                   *
     ***************************************************/
    function gc ($maxlifetime) {
      return TRUE;
    }
    session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
    session_start();
    // utilisez vos sessions normalement
    ?>

Précédent | Sommaire | Suivant
session_encode | Niveau supérieur | session_cache_limiter