sto leggendo questo tutorial:
http://php.html.it/articoli/leggi/87...tive-in-php/1/
ho preso la parte dove gestisce le sessioni con file di testo e non con DB.
Avviando il testo con test_session.php( credo sia questa la pagina per il test, anche eprchè non la indica nel tutorial), purtroppo mi restituisce questo errore:
Warning: Cannot modify header information - headers already sent by (output started at websites\sessioni\config.inc.php:10) in websites\sessioni\file_session_class.php on line 24
questa è la test_session.php
codice:<?php // inclusione del file che contiene la classe require('file_session_class.php'); // Istanziamo l'oggetto $my_session = new my_session($session_dir, $session_time, $session_gc_time); // Aggiorniamo, se necessario, la sessione "allungando la vita" del cookie $my_session->my_session_start(); // Inizializziamo l'array che conterrà i dati della sessione $_MY_SESSION_VARS = array(); /* Richiamiamo il metodo che ci restituirà le variabili di sessione, e memorizziamo le stesse nell'array $_MY_SESSION_VARS; in alternativa avremmo potuto ottenere il valore di una sola variabile, specificandone il nome come argomento del metodo */ $_SESSION_VARS = $my_session->my_session_read(); /* In questo semplice esempio ci limitiamo a stampare a video, formattandole, tutte le variabili di sessione registrate, ovviamente possiamo farne l'utilizzo desiderato */ echo ''; print_r($_SESSION_VARS); echo ''; ?>
questo è quanto contiene config.inc.php
codice:<?php // valori espressi in secondi $session_time = 0; // durata del cookie $session_gc_time = 1800; // tempo per l'esecuzione della garbage collection /* la directory dove memorizzare i dati della sessione, sui sistemi Unix like, deve avere tuti i permessi (777) */ $session_dir = './test'; // senza slash finale ?>
questo invece file_session_class.php
codice:<?php require('config.inc.php'); class my_session { var $session_dir; // la dir. dove fare lo storage dei dati di sessione 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_dir, $session_time, $session_gc_time) { $this->my_session_id = (!isset($_COOKIE['my_session_id']))? md5(uniqid(microtime())): $_COOKIE['my_session_id']; $this->file_name = 'sess_' . $this->my_session_id; $this->session_dir = $session_dir; $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); } else{ if($this->session_time > 0) setcookie('my_session_id', $this->my_session_id, $cookie_expire); } } // registra le variabili di sessione nel database function my_session_register($name, $value) { $session_name = (!isset($_COOKIE['my_session_id'])) ? 'sess_' . $this->my_session_id : $this->file_name; $_MY_SESSION = array(); if(file_exists($this->session_dir . '/' . $session_name)) { $_MY_SESSION = unserialize(implode('', file($this->session_dir . '/' . $session_name))); $_MY_SESSION[$name] = $value; } else { $_MY_SESSION[$name] = $value; } $fp = fopen($this->session_dir . '/' . $session_name, 'wb'); fputs($fp, serialize($_MY_SESSION)); fclose($fp); } /* legge e restituisce le variabili di sessione (o la singola variabile specificata */ function my_session_read($key = '') { if(file_exists($this->session_dir . '/' . $this->file_name)) { $session_vars = unserialize(implode('', file($this->session_dir . '/' . $this->file_name))); return (isset($key) && $key) ? $session_vars[$key] : $session_vars; } } // distrugge la sessione, senza cancellare il cookie function my_session_destroy() { @unlink($this->session_dir . '/' . $this->file_name); } // procedura di garbage collection function my_session_gc() { $d = dir($this->session_dir); while ($entry = $d->read()) { if($entry != '.' && $entry != '..') { if(is_dir($entry)) continue; if(strpos($entry, 'sess_') !== FALSE) { if((filemtime($this->session_dir . '/' .$entry) + $this->session_gc_time) < time()) { @unlink($this->session_dir . '/' .$entry); } } } } $d->close(); } } ?>
Sapete dirmi perchè mi restituisce quell'errore?
Grazie mille.....

Rispondi quotando