Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308

    Funzionamento session_set_save_handler

    Ciao,
    ho provato con scarso successo ad utilizzare questa funzione per gestire la sessione in modo personalizzato e orientato agli oggetti.
    Il mio problema è dato da questo genere di errore che si presenta dopo che ho modificato le impostazioni del php.ini ( o anche utilizzando ini_set ) :

    Codice PHP:
    session_start() [[url='function.session-start']function.session-start[/url]]: Failed to initialize storage moduleuser (pathc:/wamp/tmp
    Su php.net e vari altri siti è spiegato che per utilizzare un gestore personalizzato delle sessioni ( e quindi questa funzione ) bisogna modificare la linea session.save_handler da files ( che è il valore di default ) a user, questa modifica causa però l'errore di sopra.

    Qualcuno può aiutarmi?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    up

  3. #3
    dopo che hai definito il session_save_handler nel php.ini devi poi settare appropriatamente i dati con session_set_save_handler:

    prova a vedere se riesci a risolvere con l'esempio del manuale:


    http://devzone.zend.com/manual/funct...e-handler.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ok, sembra che ce l'abbia fatta...
    il mio errore era chiamare session_start() prima di session_set_save_handler().
    Posto il risultato qui di seguito, magari a qualcuno può interessare

    Codice PHP:
      ini_set('session.save_handler''user');
      switch(
    $_SERVER["SERVER_NAME"])
      {
        case 
    'localhost':
          
    define'HOST'  'localhost' );
          
    define'DB'  ''  );
          
    define'USER'  ''  );
          
    define'PASSWORD'  ''  );
        break;
      }
      
    define'DBP' 'razor_'  );
      
    define'TAB_SESSIONI' DBP.'sessioni' );

      class 
    DatabaseSessionStorage
      
    {
        private static 
    $db NULL;
        
        public static function 
    open
        
    (
          
    $save_path,
          
    $session_name
        
    )
        {
          
    self::$db = new mysqli(HOST,USER,PASSWORD,DB);
          if(
    mysqli_connect_errno() != 0)
            return 
    FALSE;
          else
            return 
    TRUE;
        }
        
        public static function 
    close()
        {
          if(
    self::$db !== NULL)
          {
            
    self::$db->close();
            
    self::$db NULL;
          }
        }
        
        public static function 
    read($id)
        {
          
    $id self::$db->real_escape_string($id);
          
    $query "SELECT * FROM ".TAB_SESSIONI." WHERE session_id = '".$id."' ";
          
    $result = @self::$db->query($query);
          if(
    self::$db->errno != 0)
          {
            
    $err self::$db->error;
            return 
    '';
          }
          
          if((
    $row = @$result->fetch_assoc()) !== NULL)
            
    $data $row['session_data'];
          else
            
    $data '';
          
          
    $result->close();
          return 
    $data;
        }
        
        public static function 
    write($id$session_data)
        {
          
    $id self::$db->real_escape_string($id);
          
    $query "DELETE FROM ".TAB_SESSIONI." WHERE session_id = '".$id."'";
          
    $result = @self::$db->query($query);
          if(
    self::$db->errno != 0)
            return 
    FALSE;
            
          
    $session_data self::$db->real_escape_string($session_data);
          
    $query "INSERT INTO ".TAB_SESSIONI." VALUES('".$id."', NOW(), '".$session_data."')";
          
    $result = @self::$db->query($query);
          if(
    self::$db->errno != 0)
            return 
    FALSE;
          else
            return 
    TRUE;
        }
        
        public static function 
    destroy($id)
        {
          
    $id self::$db->real_escape_string($id);
          
    $query "DELETE FROM ".TAB_SESSIONI." WHERE session_id = '".$id."'";
          
    $result = @self::$db->query($query);
          if(
    self::$db->errno != 0)
            return 
    FALSE;
          else
            return 
    TRUE;
        }
        
        public static function 
    gc($MaxLifeTime)
        {
          
    $maxDate date('Y-m-d H:m:s'time() - $maxLifeTime);
          
    $query "DELETE FROM ".TAB_SESSIONI." WHERE last_update < '".$maxDate."'";
          
    $result = @self::$db->query($query);
          if(
    self::$db->errno != 0)
            return 
    FALSE;
            
          return 
    TRUE;
        }
      }
      
      
    $session = new DatabaseSessionStorage;
      
    session_set_save_handler(
        array(&
    $session'open'),
        array(&
    $session'close'),
        array(&
    $session'read'),
        array(&
    $session'write'),
        array(&
    $session'destroy'),
        array(&
    $session'gc')
      );
      
      
    session_start(); 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.