Php – Sessioni con e senza cookie

11 02 2008

Eccovi una mia soluzione per la gestione della sessione in Php, in presenza e/o assenza del supporto dei cookie.

Forse qualcuno non sa che per default tutti i browser hanno i cookie abilitati, perciò tutte le informazioni sulle nostre navigate sulla rete sono salvate in questi simpatici file! Ma se semplice divertimento o per motivi di sicurezza…decidiamo di disabilitarli??? Che si fa la nostra applicazione web non funziona più??? Se avete progettato un’applicazione che non tiene in conto questa situazione, a mio dire, avete un grosso bug o difetto (come lo volete definire!)!

In pratica tutti quegli utenti che non fanno uso di cookie sono tagliati fuori dall’usare in modo efficiente la vostra applicazione!

Voi direte “Ma per esempio PhpMyAdmin vuole i cookie abilitati”, bene…ed io rispondo “Se non erro è un’applicazione che trova il suo naturale utilizzo nell’ambito backend di DBMS con Mysql, quindi l’utilizzo dei cookie è più che motivato”. Invece mi sto riferendo a siti generici da noi creati, qualsiasi oggetto della vostra fantasia! Sarebbe una grossa pecca nell’usabilità del vostro sito/applicazione web non tenere in cosiderazione questa cosa!

Ebbene, dopo tante chiacchere ecco come risolvo io, almeno per ora! Dato che è in corso progettazione e successiva creazione di una classe appositamente dedicata:

// Controllo del SessionID
// SID sarà valida sempre alla prima visita della pagina
$sessionID = SID;

// Prelievo del nome dello script
// Il nome principale dello script
$selfUrl = "index.php";

if(isset($sessionID) && $sessionID) {
	// Costante aggiungere ad ogni url per permettere la sessione senza cookie

        define("_H_", "?$sessionID&");
	// Scritta di debug
	print "C'è SID<br />";
	print _H_."<br />";
    }
    else {

        // Da mettere all'inizio di ogni collegamento url per permettere la sessione senza cookie
        define("_H_", "?");
        print("COOKIE<br />");

    }

Ora basta aggiungere ad ogni url la costante _H_ e il gioco è fatto!Per esempio:

print "pagina.php"._H_."parametro1=valore1&parametro2=valore2";

Se la sessione non è gestita da cookie, e comunque alla prima visita, l’url stampato sarà una cosa del tipo:

www.sito.xyz/pagina.php?PHPSESSID=ID_DI_SESSIONE&parametro1=valore1&parametro2=valore2

Se, invece, la sessione è mantenuta con il supporto dei cookie:

www.sito.xyz/pagina.php?parametro1=valore1&parametro2=valore2

Allora, una precisazione, ora vi chiederete ma sta variabile SID che roba è??? Ebbene quella variabile è in modo con cui PHP gestisce il valore del SessionID! Se risulta settata, “isset(SID)”, significa che il valore della sessione non è salvato in un cookie, bensì in questa variabile dedicata, più che parlare di variabile, parlerei di costante, dato che non si può modificare (ci mancherebbe!)! Spero di essere stato d’aiuto a qualcuno! 😀
N.b. Imperfezione conosciuta: Se non si passano parametri all’url, si avrà il nome dello script seguito da “?”; Se trovo un modo elegante per evitarlo lo posterò subito!Have a good session,

Dott104

P.s. Non esitate a correggermi e/o a suggerire soluzioni alternative. 😀

Annunci

Azioni

Information

3 responses

11 02 2008
ilMago

interessante! Mi hai risolto un problema che con la mia pigrizia non avrei mai avuto il coraggio di affrontare! ^_^
Per quanto riguarda l’imperfezione… potresti mettere il link in una variabile e prima di stamparla controllare che l’ultimo carattere non sia proprio ‘?’; in tal caso cancelli l’ultimo carattere. Se tratti la stringa come un array dovresti avere una complessità pressochè nulla:

if ($strUrl[count($strUrl)-1]) == '?'
$strUrl[count($strUrl)-1]) = '';

ammesso che php faccia accedere alle stringhe in maniera vettorizzata… in caso contrario c’è una funzione per esplodere una stringa in un array:
$strUrl = explode( '', $strUrl );

Speriamo funzioni tutto ciò, altrimenti passo per il cazzaro 😀
Ciao ciao

11 02 2008
dott104

Diciamo che la cosa nn è affatto male! Sta cosa la facevo in modo balordo io in php3 con una serie di if annidati da paura! Uno schifoooo! 😀

Appena l’implemento aggiorno il post! 😀

13 02 2008
PHP - Parsing di una stringa interpretata come una Url « Dott104 - Have a good life!

[…] La prima era: Php – Sessioni con e senza cookie […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...




%d blogger hanno fatto clic su Mi Piace per questo: