Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286

    Prob. con tutorial sessione alternative

    vorrei sfruttare il tutorial sulle sessioni proposto qui su HTML.it per proteggere alcune pagine private, ho decso di usare il sistema con i file di testo senza mettere un database, ho seguito tutta la procedura come indicato nel tutorial ma quando eseguo il codice c'è un'errore:

    Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\sessione\config.inc.php:12) in c:\wamp\www\sessione\file_session_class.php on line 27

    siccome ancora non conosco bene la programmazione ad oggetti qualcuno potrebbe darmi una mano a capire dovè l'errore! :-)

    il cookie con i valori della sessione viene creato ma per il resto non va!!!

    Sto lavorando con PHP 5

    Ciao
    kirk

  2. #2
    Non conosco php5, ma quella segnalazione dice che un output e' gia' stato spedito al browser.

    Magari si tratta di uno spazio ...


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    ora do un'occhiata,
    grazie
    kirk

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    Originariamente inviato da piero.mac
    Non conosco php5, ma quella segnalazione dice che un output e' gia' stato spedito al browser.

    Magari si tratta di uno spazio ...

    Allora la funzione che chiama l'errore è questa quando spedisce i cookie la prima volta mi dice...errore quindi credo che l'errore sia proprio nel tutorial!!!
    Codice PHP:
    // 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($_COOKIE['my_session_id'], $this->my_session_id$cookie_expire);
            } else {
                if(
    $this->session_time 0)
                
    setcookie($_COOKIE['my_session_id'], $this->my_session_id$cookie_expire);
                }
            } 
    Grazie
    kirk

  5. #5
    l'errore non mi risulta sia nel tutorial (sono mesi e mesi che lo uso quel codice).

    L'errore che hai ricevuto è perché al momento di fare il setcookie(); c'era già stato un output, magari uno spazio bianco come detto da piero.mac .

    Per setcookie(); header(); e alcune altre funzioni non ci deve nessun output prima della chiamata della funzione, dunque l'errore è come (e dove) richiami le funzioni nel tuo codice.

  6. #6
    Ciao,
    non è il codice del tutorial e si tratta del problema più frequente del forum: quando si verifica un errore strano la cosa migliore da fare è prendere google(o anche il motore di ricerca di questo forum) e inserire la stringa nella maschera di ricerca.

    I perchè e i percome sono qui
    http://freephp.html.it/articoli/view...sp?id=68&pag=6


    per favore NIENTE PVT TECNICI da sconosciuti

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    ora guardo meglio però non capisco dove può essere l'errore se ho creato delle pagine con il codice preciso com'è riportato sul tutorial!!

    cmq vi faccio sapere....

    Spoon25 tu usi la versione con MySQL o con il file di testo!??


    Ciao e grazie

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Il problema è il momento in cui chiami quella funzione.
    Se quando la chiami hai già inviato output al browser, prendi quell'errore e il cookie non parte.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    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

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Eppure l'errore te lo spiega chiaramente: alla riga 86 del file file_session_class.php qualcosa viene inviato in output.

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.