Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di giobar
    Registrato dal
    Aug 2004
    Messaggi
    41

    Problema con articolo Sessioni alternative

    Ho copiato dall'articolo sessioni alternative il codice quando lo provo però mi da questo errore qualcuno può aiutarmi?

    Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\mgs\config.inc.php:10) in c:\apache\htdocs\mgs\db_session_class.php on line 24

    questo errore me lo da quando eseguo

    <?php

    // inclusione del file che contiene la classe
    require('db_session_class.php');
    // connessione a MySql
    mysql_connect($db_host, $db_user, $db_pw);

    // selezione del Database
    mysql_select_db($db_name);

    // Istanziamo l'oggetto
    $my_session = new my_session($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', 'valore 1');
    $my_session->my_session_register('nome 2', 'valore 2');
    $my_session->my_session_register('nome 3', 'valore 3');

    // Chiusura connessione
    mysql_close();

    ?>

    che chiama questa

    <?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 la 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

    ?>

    che usa questo

    <?php
    // valori espressi in secondi
    $session_time = 0; // durata del cookie
    $session_gc_time = 1800; // tempo per l'esecuzione della garbage collection
    // variabili MySql
    $db_host = "localhost";
    $db_user = "root";
    $db_pw = "";
    $db_name = "mgs";
    ?>

    Ho letto che l'errore lo da se è stato eseguito del codice html prima del set cookie ma non mi sembra che lo faccia almeno che io non lo veda.
    Poi ho provato anche a mettere ob_star() che secondo un altro articolo doveva impedire l'errore ma non serve a niente
    Gio75

  2. #2
    Quell'errore sta a significare che hai già mandato un header al browser prima del set_cookie, quindi per risolverlo, devi mettere nel file principale ob_start() all'inizio di tutto l'altro codice, deve essere la prima riga

  3. #3
    Utente di HTML.it L'avatar di giobar
    Registrato dal
    Aug 2004
    Messaggi
    41
    Grazie cosi funziona
    Gio75

  4. #4
    Originariamente inviato da giobar
    Grazie cosi funziona
    Di nulla

  5. #5
    Cosa c'è alla riga 10 del file config.inc.php ?
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  6. #6
    Utente di HTML.it L'avatar di giobar
    Registrato dal
    Aug 2004
    Messaggi
    41
    in che senso questo è il config.ini

    <?php
    ob_start();
    // valori espressi in secondi
    $session_time = 0; // durata del cookie
    $session_gc_time = 1800; // tempo per l'esecuzione della garbage collection
    // variabili MySql
    $db_host = "localhost";
    $db_user = "root";
    $db_pw = "";
    $db_name = "mgs";
    ?>

    Adesso non mi da piu' l'errore di prima ma non mi invia nessun cookie perchè? si deve configurare qualcosa nel config.ini? un'altra domanda dove si impostano le password $db_user = "root";
    $db_pw = "";?
    Grazie scusate ma uso php da due mesi circa
    Gio75

  7. #7
    Ci sono degli spazi o invii dopo il tag di chiusura di php, nel file config ?

    Se si, eliminali
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  8. #8
    Utente di HTML.it L'avatar di giobar
    Registrato dal
    Aug 2004
    Messaggi
    41
    ho tolto gli spazi.
    Ma non invia il cookie , a meno che in locale non si possa usare.
    Mi stampa l'array con valore 1 nome 1 ecc.. ma non mi invia il cookie sai dirmi come mai? grazie
    Gio75

  9. #9
    Controlla le impostazioni del browser
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

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.