Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Delucidazioni sessioni in PHP

    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.

  2. #2

    Re: Delucidazioni sessioni in PHP

    Originariamente inviato da orion91
    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?
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/session_destroy

    Originariamente inviato da orion91
    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?
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/manual/en/session....use-trans-sid
    http://www.php.net/urlencode

    Originariamente inviato da orion91
    C'è modo di sapere in anticipo se i cookie sono stati accettati e quindi eventualmente sapere se gestire la sessione manualmente oppure no?
    Se ne è discusso decine di volte ....

    http://www.google.it/search?q=php+check+cookie+support

    Originariamente inviato da orion91
    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?
    Non so bene a quale "guide" tu faccia riferimento, ma il manuale ufficiale è piuttosto chiaro al riguardo:

    http://www.php.net/session_start

    session_start() creates a session or resumes the current one

  3. #3
    Ti ringrazio molto e mi scuso per la superficialità! In effetti di leggere la documentazione di PHP mi è proprio passato di mente e come mi hai giustamente fatto notare c'erano forse tutte le risposte alle mie domande!

    Mi scuso con tutti e se qualche moderatore ritiene di dover chiudere questa discussione faccia pure.

    Saluti, Carlo.

  4. #4
    Approfitto del fatto che la discussione non è stata chiusa per chiedere un consiglio!

    Per la gestione della sessione senza cookie ho deciso di affidarmi alla variabile SID, che viene valorizzata con l'id della sessione solo quando i cookie non sono abilitati, faccio un controllo su di essa per vedere se è vuota (sessione con i cookie) se non è vuota allora allego il contenuto della variabile alle chiamate delle varie pagine "protette".
    Pensate che questo possa essere un buon metodo per risolvere il problema oppure devo trovare qualche altra soluzione? Dalle prove fatte sembra andare ma magari potrebbero esserci delle problematiche che ad un novizio di PHP come me sfuggono!

    La seconda cosa che voglio chiedere, sempre come consiglio, è la seguente: ho una pagina di login dove l'utente amministratore si logga e viene iniziata la sessione. Vorrei che se richiesta nuovamente la pagina di login mentre una sessione è attiva l'utente deve essere rimandato al pannello di amministrazione.
    Prima lo script di login era molto semplice, in pratica controllavo i campi user e password del form di login, se tutto era andato bene allora session_start(), settaggio variabile di sessione opportuna e poi header( <pagina_pannello_amministrazione> ). Insomma niente di eclatante!
    Adesso per ovviare al mio problema sopra descritto avevo pensato di portare fuori da controllo su username e password la funzione session_start(), cosi posso controllare prima le variabili di sessione per verificare che una sessione sia attiva e fare eventualmente redirect al pannello di amministrazione, viceversa se la sessione non è attiva procede al controllo su username e password, setta le varie variabili di sessione e poi fa il redirect al pannello di amministrazione! Cosa ne pensate? Potrebbe andare?

    Mi scuso per lo stile dei miei post ma essendo alle prime armi quello che mi interessa sapere è più un parere sull'approccio che sto avendo nella risoluzione dei problemi, sono ancora novizio di PHP e quindi vorrei capire se sto procedendo bene. So che nella programmazione c'è più di un modo per risolvere i problemi ed il mio interesse, insomma il motivo di fondo dei miei post, è proprio quello di discutere eventualmente sulla soluzione adottata e su eventuali altre migliori soluzioni!

    Saluti, Carlo.

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.