Visualizzazione dei risultati da 1 a 7 su 7

Discussione: sessioni su database

  1. #1

    sessioni su database

    Volendo provare l'utilizzo delle sessioni alternative mi sono preso tutti i codici dell'articolo:
    http://php.html.it/articoli/leggi/87...tive-in-php/1/

    Mi riferisco alla prima parte, dove vengono create le sessioni su database.
    Purtroppo il codice non mi funziona anche se è ricreato fedelmente all'articolo (tranne che per i valori di connessione ovviamente).

    Quando accedo alla pagina start_session.php per inizializzare la sessione mi viene il messaggio:
    Warning: Cannot modify header information - headers already sent by (output started at D:\Programmi\Apache Software Foundation\Apache2.2\htdocs\SESSIONI_ALTERNATIVE\c onfig.inc.php:15) in D:\Programmi\Apache Software Foundation\Apache2.2\htdocs\SESSIONI_ALTERNATIVE\d b_session_class.php on line 24
    Se controllo la tabella sul database vedo che contiene i nuovi dati di sessione.

    Quando accedo a test_session.php il messaggio è sempre:
    Warning: Cannot modify header information - headers already sent by (output started at D:\Programmi\Apache Software Foundation\Apache2.2\htdocs\SESSIONI_ALTERNATIVE\c onfig.inc.php:15) in D:\Programmi\Apache Software Foundation\Apache2.2\htdocs\SESSIONI_ALTERNATIVE\d b_session_class.php on line 24
    Se controllo la tabella vedo che una nuova sessione è stata creata senza variabili, invece di aggiornare quella esistente.

    Infine se accedo a destroy_session.php mi si apre la pagina bianca (questo mi sembra giusto perchè non deve visualizzare niente) ma le sessioni create non vengono cancellate.

    Sembra che l'intoppo sia alla riga 24 dove c'è:
    Codice PHP:
    setcookie('my_session_id'$this->my_session_id$cookie_expire); 
    del metodo my_session_start()

    Ho scarsissima conoscenza di OOP e non capisco come mai non mi funziona.

  2. #2
    Utente di HTML.it L'avatar di Gioa32
    Registrato dal
    Jan 2000
    Messaggi
    68
    Ciao,
    setcookie devi trovarsi prima di qualsiasi output html della pagina. Anche uno spazio prima del tag <?php può generare questo errore.
    ciao

  3. #3
    vedi alla linea 15 di config.inc.php .... c'è qualche output.....

  4. #4
    Ciao,
    per quanto riguarda il file config.inc.php è solo un file di configurazione (tutti i file sono gli stessi dell'articolo copiati e incollati). Non arriva alla riga 15.
    Si può vedere anche (sempre dall'articolo) che il file start_session.php non ha output html alla fine, riguardo agli spazi io l'ho scritto così:
    Codice PHP:
    <?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);

    // 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();

    ?>
    com'è nell'articolo, copiando e incollando. Che siano i commenti o le righe vuote?

  5. #5
    controlla che dopo il tag ?> non ci siano nè spazi nè righe vuote... potrebbe essere questo il problema

  6. #6
    scusami... il tag ?> del config.ing.php

  7. #7
    Dunque, effettivamente c'erano degli spazi dopo il tag ?> di config.inc.php.
    Ora sembra funzionare senza avvisi.
    Ho rimosso anche la riga vuota nel file db_session_class.php tra <?php e
    require('config.inc.php');
    per maggior sicurezza.

    Ora, siccome devo sostituire il sistema al vecchio che usava le sessioni php con questo, per non andare alla ricerca in tutti i file dei richiami alle variabili di $_SESSION[], spero che l'array di nome $_SESSION[] venga interpretato da php come un normalissimo array se non è preceduto da session_start(), in modo da assegnare il valore a $_SESSION['nome'] recuperandolo dalla nuova sessione.

    Grazie, ciao.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.