Newbie - Gestione Della Sesione

Ciao a tutti.

Sono nuovo, e spero in una vostra mano.

Sto provando a scrivere un’applicazione con YII. Ho creato dei moduli all’interno della stessa, uno di questo mi fa da “web service” (per capirci). All’interno di questo cerco di registrare delle variabili di sessione, per mantenenre lo stato dell’applicazione. Uso, ad esempio:

Yii::app()->session[‘event’] = ‘Test’.

Tra una chiamata e la successiva però non viene mantenuta. Quello che ho notato è che la sessionid continua a cambiare tra una chiamata e l’altra.

Ho notato inoltre che facendo il print_r(apache_request_headers()); ottengo:

1a chiamata alla pagina da un clien esterno:

[Host] => xxx


[User-Agent] => xxx


[Content-Type] => text/xml; charset=utf-8


[Content-Length] => 2055


[Connection] => keep-alive

2a chiamata (c’è la sessione):

[Host] => xxx


[User-Agent] => xxx


[Content-Type] => text/xml; charset=utf-8


[Content-Length] => 858


[Connection] => keep-alive


[Cookie] => PHPSESSID=2io01sggp06dl8ah63cdr3ni44, CharCode=293a1567c77f25780de94981d4b8b907ba280ee2baa0c4

3a chiamata (ci sono 2 PHPSESSID !!!)

[Host] => xxx


[User-Agent] => xxx


[Content-Type] => text/xml; charset=utf-8


[Content-Length] => 606


[Connection] => keep-alive


[Cookie] => PHPSESSID=2io01sggp06dl8ah63cdr3ni44, CharCode=293a1567c77f25780de94981d4b8b907ba280ee2baa0c4, PHPSESSID=42die4a4n94qs3nkse8d6skfo0, PHPSESSID=10nnm7ku5m0kuvdm4ff287r612

La mia cfg in main.php

‘session’ => array(

		'class'=>'system.web.CDbHttpSession',


		'sessionName' => 'PHPSESSID',


		'connectionID' => 'db',


		'sessionTableName' => 'adm_sessions',


		'autoStart' => true,


		'useTransparentSessionID' => true,


		'cookieMode' => 'allow',


		'timeout' => 300

AGGIUNTA: Ho notato che nel response header viene sempre inserito il SetCookie, mentre, in una sessione che "funziona", il SetCookie è inserito una sola volta, la prima.

Non so che pesci pigliare !!!

Ogni suggerimento sarà di immenso aiuto

Grazie

io non ho capito molto quale sarebbe il tuo problema.

Ricordati che stai usando un framework e quindi puoi anche usare le sue librerie:

CHttpSession

Anche questo è un bell’articolo:

larryullman.com

Grazie sensorario.

Sto usando le librerie di Yii. Il problema è che non riesco, anche con queste librerie a far si che il server riconosca la sessione.

Oggi ho fatto un po’ di debugging usando uno sniffer e loggando il codice. Mi sono accorto che il browser contattato (un gSoap) risponde via cookie con 2 variabili: phpsessid (inviato in risposta dal server ad una precedente richiesta) e charcode (aggiunto dal browser). Il server però le vede come un’unica variabile. gSoap inserisce una “,” come separatore e il server non riesce ad utilizzarle. DA qui forse, l’impossibilità di riconoscere la sessione.

Questa è un’ipotesi. Qualcuno ha avuto un problema simile ?

Grazie mille

Giovanni

Hai provato ad usare la tua applicazione su un altro server, per esempio in locale? Hai un ambiente di test?

io le ho usate cosi:

per memorizzare

Yii::app()->session->add(‘cliente’, $model);

per leggere

$model = Yii::app()->session->itemAt(‘cliente’)

non so se ti sono di aiuto.

Grazie.

Provo i vostri suggerimenti !!