Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    905

    [php] classe sessioni...eccovela

    Salve a tutti vedendo che me l'hanno chiesta due in due 3d...vi posto questa "famosa" classe per le sessioni. La pagina da includere che è la classe è la seguente:

    Codice PHP:
    <?php
    class session {
    var 
    $file_name;
    var 
    $sess_dir;
    var 
    $sess_id;
    var 
    $sess_file;
    var 
    $sess_time;
    function 
    session($session_dir="."$session_time=0) {
      
    $this->sess_id = (!isset($_COOKIE['session_id'])) ? (md5(microtime() . $_SERVER['REMOTE_ADDR'])) : ($_COOKIE['session_id']);
      
    $this->file_name $this->sess_id ".session";
      
    $this->sess_dir = ($session_dir == "") ? "." $session_dir;
      
    $this->sess_time = ($session_time 0) ? (time() + $session_time) : 0;
      
    $this->sess_file $this->sess_dir "/" $this->file_name;
      if(!isset(
    $_COOKIE['session_id'])) {
        
    setcookie("session_id"$this->sess_id$this->sess_time);
      }
      global 
    $_SESSION;
      
    $_SESSION = (@implode(""file($this->sess_file)) == "") ? (array()) : (unserialize(implode(""$this->sess_file)));
    }
    function 
    register($var$value) {
      
    $SESS = array();
      if(
    file_exists($this->sess_file)) {
        
    $SESS = @unserialize(@implode("", @file($this->sess_file)));
      }
      
    $SESS[$var] = $value;
      
    $fp = @fopen($this->sess_file"wb");
      @
    fwrite($fpserialize($SESS));
      
    fclose($fp);
      global 
    $_SESSION;
      
    $_SESSION $SESS;
    }
    function 
    un_set($var="") {
      
    $var_to_unset = ($var == "") ? 00112233445566778899 $var;
      
    $fp = @fopen($this->sess_file"wb");
      if(
    $var_to_unset == 00112233445566778899) {
      @
    fwrite($fp"")
      }else{
      global 
    $_SESSION;
      unset(
    $_SESSION[$var_to_unset]);
      @
    fwrite($fpserialize($_SESSION));
      }
      
    fclose($fp);
    }
    function 
    destroy() {
      @
    unlink($this->sess_file);
      
    setcookie("session_id"""time() + 1);
      global 
    $_SESSION;
      unset(
    $_SESSION);
    }
    }
    ?>
    ecco adesso vi spiego come utilizzarla.

    Per avviare la sessione, come session_start(), sempre dopo l'inclusione basta utilizzare la funzione session() della classe. Il primo parametro è la directory dove salvare i dati di sessione, senza slash finale, quindi per salvare nella dir corrente basta scrivere "." oppure "". Il secondo parametro è la durata, se non viene settata si crea un magic cookie e la sessione si distrugge automaticamente alla chiusura del browser. La sintassi è questa:
    Codice PHP:
    $session = new session("dir"durata in secondi); 
    se non si mette niente nei campi viene creata una sessione nella directory corrente con un magic cookie. Per memorizzare un dato di sessione:
    Codice PHP:
    $session->register("variabile""valore"); 
    questo setta una variabile di sessione con nome "variabile" e valore "valore". Per leggere un dato di sessione basta fare
    Codice PHP:
    $_SESSION['variabile da leggere'
    Per unsettare una variabile di sessione o i dati dell'intera sessione, lasciandola però ancora aperta, scrivete:
    Codice PHP:
    $session->un_set("variabile"); 
    questo distrugge la variabile "variabile", se non si specifica niente vengono cancellati tutti i dati di sessione. Infine per distruggere la sessione basta fare
    Codice PHP:
    $session->destroy(); 
    ecco vi ho detto tutto.

    spero serva...come al solito non faccio mai qualcosa di utile al forum

  2. #2
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    905
    scusate ho dovuto modificare alcune cose, adesso potete usarla, stava male prima.

  3. #3
    Utente bannato
    Registrato dal
    Sep 2005
    Messaggi
    905
    a quanto pare non serve a nessuno? lo sapevo sempre il solito scemo....

  4. #4

    Grazie

    no hai fatto un bel lavoro.
    Ti ringrazio perchè è proprio quello che mi serve.
    Guardo se funziona poi ti dico.
    Ciao

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Evitiamo di riprendere discussioni morte e sepolte.

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.