Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Aiuto: Sessioni in Php

  1. #1

    Aiuto: Sessioni in Php

    Salve a tutti....chiedo aiuto! Ho provato a fare l'esempio delle Sessioni in php spiegato tra le guide di questo sito... tutto copiato perfettamente. una volta che però vado ad aprire il file test_sessio.php per testare il tutto mi viene fuori questo errore:

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/netsons.org/cisiamotutti/sessionphp/config.inc.php:14) in /var/www/netsons.org/cisiamotutti/sessionphp/db_session_class.php on line 24

    il file db_session_class.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 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 richiama il file config.inc.php:

    <?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 = 'mysql5.netsons.org';
    $db_user = 'cisiamotutti';
    $db_password = 'ps231284';
    $db_name = 'cisiamotutti';
    ?>

    se qualcuno che ne capisce piu di me magari ha il tempo di guardarci mi farebbe un grandissimo favore....
    Grazie a tutti cmq....

  2. #2
    La funzione session_start va processata prima dell'invio di qualsiasi header.
    adesso non so cosa c'é nel config.php cosa viene eseguito, ecc...

    Comunque session_start va messo all'inizio, ma proprio all'inizio prima di qualunque cosa.

  3. #3
    Utente di HTML.it L'avatar di deleted_id_48586
    Registrato dal
    Nov 2002
    Messaggi
    1,732
    Originariamente inviato da mtx_maurizio
    La funzione session_start va processata prima dell'invio di qualsiasi header.
    adesso non so cosa c'é nel config.php cosa viene eseguito, ecc...

    Comunque session_start va messo all'inizio, ma proprio all'inizio prima di qualunque cosa.
    ATTENZIONE!

    NON prima di qualunque altra cosa ma PRIMA di QUALUNQUE output verso il client, il chè vuole dire prima di qualsiasi carattere, spazio vuoto o altro header.

    Potrebbe benissimo avere 1.000 righe di codice sovrastante in modo lecito se non generano output.


  4. #4
    si ok, ho un po' esagerato

  5. #5
    ma già "dovrebbe essere prima di qualsiasi output"....questo è il codice di prova....:

    <?php

    // inclusione del file che contiene la classe
    require('db_session_class.php');

    // connessione a MySql
    mysql_connect($db_host, $db_user, $db_password);

    // selezione del Database
    mysql_select_db($db_name);

    // Istanziamo l'oggetto
    $my_session = new my_session($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 */
    $_MY_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 "<pre>\n";
    print_r($_MY_SESSION_VARS);
    echo "</pre>\n";

    // Chiusura connessione
    mysql_close();

    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    residenza
    Florence - Italy
    Messaggi
    60
    la riga 14 del config.inc.php genera l'errore che impedisce alla 24 di db_session_class.php di essere eseguita senza problemi così dice il tuo messaggio perciò la riga 14 del config.inc.php genera output......

    così mi pare ma tieni presente che sono un principiante

    ciao in bocca al Lupo


  7. #7
    :master: peccato che il file config.inc.php non ha 14 righe

    sono in alto mare...

  8. #8
    Originariamente inviato da piero2384
    :master: peccato che il file config.inc.php non ha 14 righe
    LoL, e invece ce le ha, solo che sono vuote. Questo file genera output?

    Codice PHP:
    <?php
    ?>
    Risposta: dipende con che editor lo scrivi. Alla riga 2 quasi tutti gli editor mettono il ritorno a capo.

  9. #9
    quindi dovrò togliere qualsiasi ritorno a capo? qualsiasi spazio?....io scrivo il codice con il dreamweaver

  10. #10
    Originariamente inviato da piero2384
    quindi dovrò togliere qualsiasi ritorno a capo? qualsiasi spazio?....io scrivo il codice con il dreamweaver
    No, dovrai togliere qualsiasi spazio e ritorno a capo solo dopo la chiusura del PHP, cioè dopo ?>. Dreamweaver so per certo che può evitare di aggiungere un ritorno a capo all'ultima linea (ne avevo discusso con uno che lo usava in un altro thread), però non so se è un'opzione automatica o la devi selezionare.

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.