Buongiorno.
Ho creato un insieme di pagine PHP per consentire l'accesso a determinati Utenti - preselezionati e registrati in una tabella di DB - ai dati registrati sul DB stesso.
La struttura di accesso è così progettata:
1. Nella pagina_a.html è contenuto un form con due voci: username e password. Al SUBMIT si viene rinviati alla pagina_b.php
2. La pagina_b.php effettua controlli di compatibilità e sanitarizzazione dell'input, poi verifica che username e password corrispondano nella tabella del DB. In caso di errore si viene rinviati alla pagina_a.html mediante funzione header. Se invece tutto è OK vengono scaricate dal DB le autorizzazioni previste per quell'utente, viene creato un oggetto utente, viene aperta una sessione, alla variabile di sessione viene assegnato l'oggetto utente ed il controllo viene trasferito alla pagina_c.php mediante funzione header
3. La pagina_c.php visualizza un menu di accesso alle diverse funzioni consentite, con voci-menu differenziate a seconda del livello di autorizzazione consentito per quell'utente.
Il tutto in locale (Win XP o Win7, Apache 2.4, PHP 5.4.4, testato con 5 browsers diversi) funziona perfettamente.
Trasferendo il tutto in remoto (Linux, Apache 2, PHP 5.3.9), la funzione header viene del tutto ignorata: non dà alcun errore, nell'HTML della pagina il tag <body> è rigorosamente vuoto; se inserisco dell'output dopo la funzione header questo viene regolarmente visualizzato, come se la funzione header fosse assolutamente trasparente o inesistente.
Escludo errori di sintassi o di logica, visto che la funzione in locale fa regolarmente il suo dovere.
Ho verificato con phpinfo i settaggi di php.ini, che mi sembrano assolutamente identici fra di loro, a meno ovviamente delle nuove voci introdotte da 5.4.4 rispetto a 5.3.9, che però non dovrebbero avere alcuna attinenza con il problema.
Per risolvere almeno temporaneamente il problema ho commentato le istruzioni header ed ho introdotto due pulsanti - uno per il caso di errore che mi rimanda indietro ed uno per il caso di OK che mi manda avanti - e qui si è presentato un secondo, incomprensibile problema.
Il tutto in locale funziona a quel dio biondo, ma in remoto succede una cosa stranissima: quando dalla pagina_b.php passo alla pagina_c.php, all'apertura della sessione non viene riesumata la sessione già aperta ma ne viene aperta una nuova con un UID diverso.
Escludo anche qui errori di sintassi o di logica, visto che la sessione in locale fa regolarmente il suo dovere.
Ho ipotizzato una possibile mancata registrazione del cookie di sessione, ma l'ipotesi è piuttosto remota, visto che tutti i miei browsers accettano i cookies e il path dei cookies è rimasto quello "Master Value".
Qualcuno ha avuto i miei stessi problemi? Forse mi è sfuggito qualche settaggio del php.ini? Io ho soltanto inserito (in ogni pagina e prima di session_name e session_start), sia in remoto sia in locale, il session.save_path ed ho verificato che viene utilizzato correttamente, ma quando passo alla seconda pagina della sessione, in quella cartella ci trovo l'UID della sessione di partenza, con tutti i dati che ci ho messo, ed un nuovo UID vuoto.
Grazie a chi mi potrà aiiutare.
Fabrizio
Ho creato un insieme di pagine PHP per consentire l'accesso a determinati Utenti - preselezionati e registrati in una tabella di DB - ai dati registrati sul DB stesso.
La struttura di accesso è così progettata:
1. Nella pagina_a.html è contenuto un form con due voci: username e password. Al SUBMIT si viene rinviati alla pagina_b.php
2. La pagina_b.php effettua controlli di compatibilità e sanitarizzazione dell'input, poi verifica che username e password corrispondano nella tabella del DB. In caso di errore si viene rinviati alla pagina_a.html mediante funzione header. Se invece tutto è OK vengono scaricate dal DB le autorizzazioni previste per quell'utente, viene creato un oggetto utente, viene aperta una sessione, alla variabile di sessione viene assegnato l'oggetto utente ed il controllo viene trasferito alla pagina_c.php mediante funzione header
3. La pagina_c.php visualizza un menu di accesso alle diverse funzioni consentite, con voci-menu differenziate a seconda del livello di autorizzazione consentito per quell'utente.
Il tutto in locale (Win XP o Win7, Apache 2.4, PHP 5.4.4, testato con 5 browsers diversi) funziona perfettamente.
Trasferendo il tutto in remoto (Linux, Apache 2, PHP 5.3.9), la funzione header viene del tutto ignorata: non dà alcun errore, nell'HTML della pagina il tag <body> è rigorosamente vuoto; se inserisco dell'output dopo la funzione header questo viene regolarmente visualizzato, come se la funzione header fosse assolutamente trasparente o inesistente.
Escludo errori di sintassi o di logica, visto che la funzione in locale fa regolarmente il suo dovere.
Ho verificato con phpinfo i settaggi di php.ini, che mi sembrano assolutamente identici fra di loro, a meno ovviamente delle nuove voci introdotte da 5.4.4 rispetto a 5.3.9, che però non dovrebbero avere alcuna attinenza con il problema.
Per risolvere almeno temporaneamente il problema ho commentato le istruzioni header ed ho introdotto due pulsanti - uno per il caso di errore che mi rimanda indietro ed uno per il caso di OK che mi manda avanti - e qui si è presentato un secondo, incomprensibile problema.
Il tutto in locale funziona a quel dio biondo, ma in remoto succede una cosa stranissima: quando dalla pagina_b.php passo alla pagina_c.php, all'apertura della sessione non viene riesumata la sessione già aperta ma ne viene aperta una nuova con un UID diverso.
Escludo anche qui errori di sintassi o di logica, visto che la sessione in locale fa regolarmente il suo dovere.
Ho ipotizzato una possibile mancata registrazione del cookie di sessione, ma l'ipotesi è piuttosto remota, visto che tutti i miei browsers accettano i cookies e il path dei cookies è rimasto quello "Master Value".
Qualcuno ha avuto i miei stessi problemi? Forse mi è sfuggito qualche settaggio del php.ini? Io ho soltanto inserito (in ogni pagina e prima di session_name e session_start), sia in remoto sia in locale, il session.save_path ed ho verificato che viene utilizzato correttamente, ma quando passo alla seconda pagina della sessione, in quella cartella ci trovo l'UID della sessione di partenza, con tutti i dati che ci ho messo, ed un nuovo UID vuoto.
Grazie a chi mi potrà aiiutare.
Fabrizio