Visualizzazione risultati 1 fino 4 di 4

Discussione: PHP - listare tutti i file relativi alle sessioni utente.

  1. #1
    Guest

    Predefinito PHP - listare tutti i file relativi alle sessioni utente.

    Salve ragazzi, ho appena iniziato lo studio del php e ora mi sono imbattuto nelle sessioni.

    Nel cercare di comprenderne bene a fondo l'utilizzo, mi piacerebbe vedere la lista dei file "sess_XXX" nel session_path.

    Innanzitutto volevo chiedervi se su altervista è possibile modificarlo. Poi volevo sapere come poterne ottenere i file.

    attualmente per l'utilizzo delle sessioni sto usando questa classe:

    Codice:
    <?php
    
    class SessionManager implements SessionHandlerInterface{
        
    	private $savePath;
    	
    	public function start_session($boolean=true){
    		
    		
    		if (session_start()){
    			
    			if ($boolean==true){
    				
    				PhpTools::printf("[SESSION_MANAGER] - Session has been started/retrieved (".session_id().").\n");
    			}
    			
    		}
    	}
    	
    	public function end_session(){
    		
    		session_unset();
    		session_destroy();
    		PhpTools::printf("[SESSION_MANAGER] - Session has been closed.\n\n");
    	}
    	
    	public function getSession_ID(){
    		
    		return session_id();
    	}
    	
    	public function get($something){
    		
    		if(isset($_SESSION[$something])){
    		
    			return $_SESSION[$something];
    		}
    		else return null;
    	}
    	
    	public function set($someString,$someObject){
    		
    		$_SESSION[$someString]=$someObject;
    	}
    	
    	public function setSession_ID($id){
    		
    		session_id($id);
    	}
    	
        public function open($savePath, $sessionName) {
            
        	PhpTools::printf("[SESSION_MANAGER] - SESSION_OPEN().\n");
        	$this->savePath = $savePath;
            
            if (!is_dir($this->savePath)) {
            
            	mkdir($this->savePath, 0777);
            	PhpToolS::printf("[SESSION_MANAGER] - File is: "."$this->savePath/sess_$id"."\n\n");
            }
    
            return true;
        }
    
        public function close(){
        	
        	PhpTools::printf("[SESSION_MANAGER] - SESSION_CLOSE().\n\n");
        	return true;
        }
    
        public function read($id){
    		
        	
        	PhpTools::printf("[SESSION_MANAGER] - SESSION_READ().\n");
        	PhpTools::printf("[SESSION_MANAGER] - Scanning directory: ".$this->savePath."\n");
    
        	print_r(scandir(session_save_path()));
        	
        	PhpToolS::printf("[SESSION_MANAGER] - File is: "."$this->savePath/sess_$id"."\n\n");
        	
        	return (string)@file_get_contents("$this->savePath/sess_$id");
        }
    
        public function write($id, $data){
        
        	PhpTools::printf("[SESSION_MANAGER] - SESSION_WRITE().\n");
        	PhpToolS::printf("[SESSION_MANAGER] - File is: "."$this->savePath/sess_$id"."\n\n");
        	
        	return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
        }
    
        public function destroy($id){
            
        	$file = "$this->savePath/sess_$id";
        	PhpTools::printf("[SESSION_MANAGER] - SESSION_DESTROY().\n");
        	PhpTools::printf("[SESSION_MANAGER] - File is:".$file."\n\n");
            if (file_exists($file)) {
            
            	unlink($file);
            }
    		
            return true;
        }
    
        public function gc($maxlifetime){
            
        	PhpTools::printf("[SESSION_MANAGER] - SESSION_GC().\n\n");
        	
        	foreach (glob("$this->savePath/sess_*") as $file) {
            	
        		PhpTools::printf("FILE IS: ".basename($file));
        		
        		if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
                
        			unlink($file);
                }
            }
    
            return true;
        }
    }
    Da questo codice, purtroppo, sebbene non riceva segnali di errore, l'istruzione:

    print_r(scandir(session_save_path()));

    non mostra nulla, e credo che print_r, che restituisce false in caso di fallimento, non riesca ad usare tale cartella...

    Per cui volevo provare a modificare il path delle sessioni con uno a mia scelta per vedere chiaramente i file anche tramite ftp, giusto per testare il suo funzionamento.

    Potete aiutarmi? Grazie!

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Perché stai cercando di rimpiazzare le normali sessioni PHP con una classe personalizzata, che funzionerebbe allo stesso modo, solo un filo peggio? Se è un esperimento, ok, altrimenti ti converrebbe usare $_SESSION.

    Per la tua domanda in particolare, vedi la documentazione di session_save_path().

  3. #3
    Guest

    Predefinito

    Ciao dreadnaut, grazie per la tua risposta!

    Sto cercando di imparare ad usare tale classe perchè ho bisogno di ripristinare alcune cose su un db una volta che la mia sessione viene chiusa.

    Per ora è tutto un esperimento, voglio solo capirci meglio qualcosa.

    Tra l'altro ho diversi dubbi sulle sessioni, soprattutto sulla loro cancellazione, e quindi credo che dovrò aprire un thread a parte.

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    In generale non preoccuparti di cancellare una sessione. È sufficiente, ed assai più facile, non considerarla più valida se qualcuno cerca di usarla dopo la sua scadenza.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •