Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Aiuto su utilizzo delle sessioni

    Salve a tutti!

    spero di riuscire a far capire di cosa ho bisogno: sto imparando ad utilizzare php in tempi un po' troppo brevi per i miei gusti (ho una scadenza per un progetto di laurea universitario) ed ora sto iniziando ad integrare le sessioni. Ho il mio progetto che sembra essere funzionale (speriamo) e nel quale è prevista una login iniziale. Dopo questa l'utente ha loggato può essere generico o amministratore grazie ad un campo temp (0 o 1) presente nel database nella tabella "utenti". Nelle varie pagine si verifica se l'utente è loggato e quindi se può accedere con qualcosa del tipo:

    Codice PHP:
    <?php 
    include_once("../include/config.php"
    include_once(
    "../include/auth.lib.php");

    list(
    $status$user) = auth_get_status();

    if(
    $status == AUTH_LOGGED){
        
    $msg 'Contenuto della pagina';

    }else    
    $msg 'Non hai i diritti per visualizzare la pagina';

    ?>
    e fin qui credo sia tutto ok...

    Ora credo che per portarmi dietro il tipo di permesso dell'utente devo utilizzare le sessioni. Allora mi sono letto la vostra bella guida (approfitto per i complimenti al sito!) ed ho creato il file db_session_class.php (e la rispettiva tabella my_session nel database) strutturato come segue:

    Codice PHP:

    <?php
    require('config.inc.php');

    class 
    my_session {

           var 
    $my_session_id// l'id di sessione
        
    var $session_time// la durata della sessione
           
    var $session_gc_time// il tempo per la garbage collection


    //il costruttore della classe, inizializza le variabili
    function my_session($session_time$session_gc_time) {
        
    $this->my_session_id = (!isset($_COOKIE['my_session_id'])) ? md5(uniqid(microtime())) : $_COOKIE['my_session_id'];
              
    $this->session_time $session_time;
              
    $this->session_gc_time $session_gc_time;
           }

    // avvia o aggiorna la sessione
    function my_session_start() {
              
    $cookie_expire = ($this->session_time 0) ? (time() + $this->session_time) : 0;
              if(!isset(
    $_COOKIE['my_session_id'])) {
                 
    setcookie('my_session_id'$this->my_session_id$cookie_expire);
                 
    mysql_query("INSERT INTO my_session VALUES('" $this->my_session_id "', '', " time() . ")");
              } else {
                 if(
    $this->session_time 0)
                        
    setcookie('my_session_id'$this->my_session_id$cookie_expire);
                  }
           }

    /*   registra le variabili di sessione
         specificata nel database */

    function my_session_register($name$value) {
              
    $_MY_SESSION = array();
              
    $session_query mysql_query("SELECT session_vars FROM my_session WHERE sessid = '{$this->my_session_id}'");
              if(
    mysql_num_rows($session_query) > 0) {
                 
    $result mysql_fetch_array($session_query);
                 
    $_MY_SESSION unserialize($result['session_vars']);
                 
    $_MY_SESSION[$name] = $value;
                 
    mysql_query("UPDATE my_session SET session_vars = '" serialize($_MY_SESSION) . "' WHERE sessid = '{$this->my_session_id}'");
              } else {
                 
    $_MY_SESSION[$name] = $value;
                 
    mysql_query("UPDATE my_session SET session_vars = '" serialize($_MY_SESSION) . "' WHERE sessid = '{$this->my_session_id}'");
                  }
           }

    /*   legge e restituisce le variabili di sessione
          (o la singola variabile specificata */

    function my_session_read($key '') {
          
    $session_query mysql_query("SELECT session_vars FROM my_session WHERE sessid = '{$this->my_session_id}'");
          if(
    mysql_num_rows($session_query) > 0) {
             
    $result mysql_fetch_array($session_query);
             
    $session_vars unserialize($result['session_vars']);
             return (isset(
    $key) && $key) ? $session_vars[$key] : $session_vars;
          }
       }

    /*   distrugge la sessione, rimuovendo i relativi
          dati (non cancella il cookie) */
       
    function my_session_destroy() {
          
    mysql_query("UPDATE my_session SET session_vars = '' WHERE sessid = '{$this->my_session_id}'");
       }
       
    // procedura di garbage collection
       
    function my_session_gc() {
          
    mysql_query("DELETE FROM my_session WHERE session_date < " . (time() - $this->session_gc_time));
       }

    // end class

    ?>
    ora cosa dovrei fare per mantenere questo riferimento ai permessi nelle pagine?
    my_session_start() in ogni pagina?
    my_session_register() quando?
    my_session_destroy() quando?
    come recupero il permesso nella pagina e come lo controllo?
    ed infine: se utilizzo questa procedura è comunque necessario il controllo iniziale per vedere se l'utente è loggato?

    scusate lo sproloquio ma cerco di far capire qual'è il mio intoppo.

    Ciao e grazie anticipatamente a chi potrà darmi una mano

  2. #2
    up

  3. #3
    mi rispondo ancora da solo... io IN LOCALE riesco a tener comunque riferimento dell'utente loggato o non e dei permessi ad esso associato, senza utilizzare le sessioni.

    Perchè ne avrei bisogno?
    Per connessioni multiple o per qualche altro motivo?

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.