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

    Fantasmi nelle sessioni?

    Vi pongo un aneddoto perché ha dell'incredibile e visto che devo consegnare un lavoro.

    Ho implementato per un sito la gestione della login. La gestione è fatta tramite sessioni, utilizzo session_start() per cominciare la sessione, session_unset() e session_destroy() per chiuderla, quindi popolo ed accedo alle variabili tramite $_SESSION.

    Premetto che il codice è già stato testato ed ha sempre funzionato. Fatto sta che ieri sera alle 3 di notte, dopo aver finito di implementare alcune cose nel sito in questione (non connesse alla login), ho chiuso tutto ed ho spento il computer di CASA (che ha il suo modem ADSL). Il sistema di Login funzionava egregiamente, come aveva sempre fatto e come ha fatto per tutta la giornata di ieri.
    Stamani arrivo al pc del mio ufficio (Con Ubuntu Breezy, Firefox 1.0.7 e collegato ad internet tramite router aziendale), provo a fare la login sul sito, questa avviene, ma non si "propaga" alle pagine successive. Dopo un po' di smanettamenti (e qualche echo) mi sono accorto che non mi vengono più salvati i dati in sessione, nemmeno uno.

    Considerando che firefox ha i cookie attivi, che da questo pc avevo comunque lavorato senza problemi con la login, cosa potrebbe essere stato toccato nella configurazione di php in modo da causare questo problema? Chiedo questo perché il server non è mio e non ospita solo il sito su cui sto lavorando e forse in queste ora hanno cambiato qualcosa.

    Se avete qualche spiegazione plausibile (anche non) sono ben disposto ad ascoltarla.

    PS: Il problema non è in register_globals (settata ad off), in quanto, come si evince dal manuale ufficiale, register_globals su off può dare problemi solo se si usano le funzioni session_register(), session_is_registered() e session_unregister(), funzioni che io non uso.

    PPS: La versione del PHP è la 4.3.8.
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  2. #2
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Spiegazione nessuna.

    Ma è già capitato ad un mio collega. E ti assicuro che il codice non aveva nulla di errato.

    Ci sono vari post al riguardo sulle User Contributed Notes in php.net / funzione session_start();

    Auguri! VVoVe:

    [.:: JaguarXF ::.]
    __________________

  4. #4
    Originariamente inviato da mark2x
    Spiegazione nessuna.

    Ma è già capitato ad un mio collega. E ti assicuro che il codice non aveva nulla di errato.

    Ci sono vari post al riguardo sulle User Contributed Notes in php.net / funzione session_start();

    Auguri! VVoVe:
    E' che se non so cosa hanno toccato nel php.ini non posso dirgli di rimetterlo a posto!

    Grazie cmq...
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  5. #5
    Allora, ho provato su due server differenti (uno del cliente ed uno mio) e la cosa persiste

    Ecco il phpinfo dei due server, relativamente alla parte delle sessioni.

    SERVER CLIENTE - PHP 4.3.8
    codice:
    Session Support 		enabled
    Registered save handlers 	files user
    
    Directive		Local Value	Master Value
    session.auto_start	Off		Off
    session.bug_compat_42	On		On
    session.bug_compat_warn	On		On
    session.cache_expire	180		180
    session.cache_limiter	nocache		nocache
    session.cookie_domain	no value	no value
    session.cookie_lifetime	0		0
    session.cookie_path	/		/
    session.cookie_secure	Off		Off
    session.entropy_file	no value	no value
    session.entropy_length	0		0
    session.gc_divisor	100		100
    session.gc_maxlifetime	1440		1440
    session.gc_probability	1		1
    session.name		PHPSESSID	PHPSESSID
    session.referer_check	no value	no value
    session.save_handler	files		files
    session.save_path	/var/lib/php	/var/lib/php
    session.serialize_handler php		php
    session.use_cookies	On		On
    session.use_only_cookies  Off		Off
    session.use_trans_sid	Off		Off
    SERVER MIO - PHP 4.4.1
    codice:
    Session Support 		enabled
    Registered save handlers 	files user
    
    Directive		Local Value	Master Value
    session.auto_start	Off		Off
    session.bug_compat_42	On		On
    session.bug_compat_warn	On		On
    session.cache_expire	180		180
    session.cache_limiter	nocache		nocache
    session.cookie_domain	no value	no value
    session.cookie_lifetime	0		0
    session.cookie_path	/		/
    session.cookie_secure	Off		Off
    session.entropy_file	no value	no value
    session.entropy_length	0		0
    session.gc_divisor	100		100
    session.gc_maxlifetime	1440		1440
    session.gc_probability	1		1
    session.name		PHPSESSID	PHPSESSID
    session.referer_check	no value	no value
    session.save_handler	files		files
    session.save_path	/tmp		/tmp
    session.serialize_handler  php		php
    session.use_cookies	On		On
    session.use_only_cookies  Off		Off
    session.use_trans_sid	On		On
    E' tutto pressoché identico, tranne il session.use_trans_sid.

    Dopo varie prove sono giunto alla conclusione che non viene salvato l'ID della sessione nel cookie, se infatti passo il PHPSESSID nell'url, tutto funziona (ora devo trovare come passarlo in automatico senza usare use_trans_sid).

    La domanda è, quindi, perché non salva il PHPSESSID nel cookie? considerando che in tutti i browser con cui ho fatto (ed ho fatto fare) i test i cookie funzionano egregiamente?

    Aiutatemi che sono alla disperazione.
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Prova ad usare:

    codice:
    session_write_close();
    prima di uscire dallo script e/o fare un redirect.

    [.:: JaguarXF ::.]
    __________________

  7. #7
    Allora, ho trovato la soluzione; non setta il cookie automaticamente e francamente non capisco il perché.

    Ho risolto mettendo un bel

    @setcookie('PHPSESSID', $PHPSESSID, NULL, '/');

    all'inizio del codice per la login.

    Fatto sta che questa disavventura mi ha fatto notare che se l'utente non può salvare nei cookie, e se non è abilitato trans-sid (come sul server del cliente), deve essere previsto un metodo per appendere il PHPSESSID agli url.

    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  8. #8
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Bene!

    Così per curiosità mia, hai provato session_write_close() ?

    In ogni modo, terrò presente la soluzione, dovesse mai capitarmi

    [.:: JaguarXF ::.]
    __________________

  9. #9
    Originariamente inviato da mark2x
    Bene!

    Così per curiosità mia, hai provato session_write_close() ?

    In ogni modo, terrò presente la soluzione, dovesse mai capitarmi
    si, ma non cambiava!
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  10. #10
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Okappa grazie, come sospettavo quella nota su php.net è una chiavica

    [.:: JaguarXF ::.]
    __________________

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.