Ragazzi vorrei, sempre che sia possibile, un chiarimento sulla gestione della sessione in PHP.
Premetto che ho provato a leggere svariate guide, anche qualche articolo di html.it, sono riuscito ad implementare la sessione ma purtroppo i miei dubbi non sono stati fugati. Sinceramente a me non piace utilizzare uno strumento e non capire completamente come funzioni e poi si rischierebbe anche qualche brutta figura!
Veniamo quindi alla questione, la sessione può essere avviata con la funzione session_start() che crea un file apposito sess_<id_sessione> nella cartella impostate nel file php.ini e che contiene tutte le informazioni memorizzate eventualmente nelle variabili di sessione, $_SESSION['<nome_variabile>']=<valore>, fino a qui tutto bene!
So però che viene creato/inviato al browser un cookie che permette di associare la sessione create a quel client e che se i cookie non sono permessi nel browser allora le informazioni di sessione vengono inviate come parametri insieme all'URL delle pagine.
Qui arrivano le prime domande, tali cookie come vengono gestiti? Se uso session_destroy() sparisce anche il cookie sul browser oppure devo distruggerlo io manualmente? In Java per usare la riscrittura "automatica" dell'URL si poteva usare una specifica funzione, encodeURL(), che permetteva di tenere traccia della sessione tra le pagine senza dover legare manualmente le variabili di sessione all'URL della pagina, in PHP esiste qualcosa del genere oppure devo fare tutto a mano? C'è modo di sapere in anticipo se i cookie sono stati accettati e quindi eventualmente sapere se gestire la sessione manualmente oppure no?
Questi diciamo che sono le mie domande principali! Poi c'è ne ancora una ma è più una curiosità! Dopo aver verificato le credenziali di accesso creo una sessione con session_start() e memorizzo una serie di variabili. Nelle pagine che devono controllare se la sessione è valida ho inserito in cima alla pagina uno script che controlla se una specifica variabile di sessione ha un certo valore, ma per fare questo ho dovuto usare di nuovo session_start() prima del "if" sulla variabile, stesso discorso nello script di terminazione della sessione, prima di lanciare session_destroy() ho dovuto ancora chiamare session_start() prima altrimenti ricevevo un errore!
Ecco in nessuna guida/articolo era spiegata il perché di questa cosa! Come mai devo avviare nuovamente un'altra sessione per controllare e distruggere una sessione avviata precedentemente? Se qualcuno riesce a chiarirmi questa cosa glie ne sarei davvero grato.
Saluti, Carlo.