Forse non mi sono spiegato bene: il codice che includo nella pagina che visualizzo nel browser è questo, per prova sto usando solo queste poche righe sotto e non mi sembra che quelle righe spediscano qualcosa al browser:
Codice PHP:
<?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);
// Avviamo la sessione inviando il cookie al client
$my_session->my_session_start();
// Richiamiamo la procedura di garbage collection
$my_session->my_session_gc();
// Registriamo tre variabili di prova
$my_session->my_session_register('nome 1', 'value1');
$my_session->my_session_register('nome 2', 'value2');
$my_session->my_session_register('nome 3', 'value3');
?>
Ripetendo un po' tutto quanto:
questo è l'errore che mi dice che qualcosa è stata già spedita
Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\sessione\file_session_class.php:86) in c:\wamp\www\sessione\file_session_class.php on line 29
questo è una parte del codice che mi dice che l'errore è nella linea 29 precisamente
setcookie('my_session_id',$this->my_session_id, $cookie_expire);
Cosa mando al browser prima???
a me sembra che non sto mandando nulla, però l'errore c'è.
Codice PHP:
<?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 = '.'; // senza slash finale
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); /// linea 29
} else {
if($this->session_time > 0)
setcookie('my_session_id', $this->my_session_id, $cookie_expire);
}
}
Grazie mille a tutti
kirk