Newsgroup: it.comp.www.php
Titolo: SID: questo sconosciuto

Salve a tutti,
non riesco a capire perché su 2 server con la stessa versione di php e 
lo stesso php.ini, su 1 server SID ha un valore mentre sull'altro ha la 
stringa vuota...
ne sapete qualcosa?
grazie
-- 
Giacomo

 vuota...
Dipende da come è stato impostato. Cito dal manuale:
"Ci sono due metodi per propagare l'id di sessione:
I Cookies
Un parametro dell'URL
Il modulo di sessione supporta entrambi i metodi. I cookies sono 
ottimi, ma dal momento che possono non essere a disposizione (i clients 
non sono costretti ad accettarli ), non possiamo dipendere da questi. 
Il secondo metodo incorpora l'id di sessione direttamente negli URL.
PHP ha la capacità di farlo in modo trasparente quando compilato con 
--enable-trans-sid. Se attivate questa opzione, gli URL relativi 
saranno modificati per contenere l'id di sessione automaticamente. In 
alternativa, potete usare la costante SID che è definita, se il client 
non ha mandato il cookie appropriato. SID può avere la forma di 
session_name=session_id o può essere una stringa vuota."
rob4you

 session_name=session_id o può essere una stringa vuota."
Si ma perché 2 server con PHP compilato allo stesso modo e con lo stesso 
php.ini devono avere il SID diverso?
-- 
Giacomo

 php.ini devono avere il SID diverso?
Se sei certo di questo e cioè che le due configurazioni siano 
ESATTAMENTE identiche (stesso server, stessa versione di php, stesso 
php.ini, ecc.), l'unica cosa che mi viene in mente da dirti è che in un 
caso il browser manda il cookie, nell'altro no. Se hai pure usato lo 
stesso browser con le stesse impostazioni nei due 
casi...aiuto...:-)...magia nera. L'unica cosa che resterebbe da fare in 
questo caso è controllare gli header che browser e client si scambiano, 
per vedere se nei due casi c'è qualcosa di diverso.
rob4you

 per vedere se nei due casi c'è qualcosa di diverso.
Le cose di cui sono certo:
- stessa versione di PHP
- stesso file php.ini
- stesso browser
I 2 computer sono diversi, e devo controllare se i 2 file di 
configurazione di apache2 sono uguali ("apache2.conf"). Per il resto 
tutto uguale...=(
-- 
Giacomo

 client si scambiano
ovviamente volevo dire client e server..ma avevi capito ugualmente. ;-)
rob4you

 di apache2 sono uguali ("apache2.conf"). Per il resto tutto uguale...=(
Quindi entrambi i server sono apache. Vedi un po' la configurazione per 
vedere in cosa differisce.
Caspita! :-) ci deve essere per forza qualcosa di diverso!!!!! :-d
rob4you

 Caspita! :-) ci deve essere per forza qualcosa di diverso!!!!! :-d
Controllato ora, queste le differenze:
- su 1 c'è la direttiva ServerName, su l'altro no
- la direttiva DirectoryIndex è diversa
- su 1 ci sono queste 2 direttive:
	AddType application/x-httpd-php .php .phtml
	AddType application/x-httpd-php-source .phps
Che su l'altro non ci sono. Per il resto sono uguali...non capisco.
-- 
Giacomo

 	AddType application/x-httpd-php-source .phps
Ricapitolando, abbiamo:
- stessa versione di PHP
- stesso file php.ini
- stesso browser
- stessa versione di webserver
Non ti dico di provare a rendere i due file di config identici, 
riavviare il server e vedere che succede, perché mi sembra una c...ata 
enorme. :-)
Pensandoci, non è che i due server a cui accedi si trovano in due 
"aree" diverse? Del tipo uno è sulla intranet e l'altro no? In questo 
caso il diverso comportamento potrebbe dipendere dalla comfigurazione 
del browser a seconda della provenienza dei contenuti.
rob4you

 diverse? Del tipo uno è sulla intranet e l'altro no?
Ehm...esattamente, 1 è sulla intranet e l'altro è sul web. In 
particolare nella intranet la variabile SID ha un valore, sul web no.
Il problema è che in un'altra directory (del server nella intranet) la 
variabile SID è nulla, mentre ha un valore solo in quella precisa 
directory...
-- 
Giacomo

 directory...
Secondo me hai un problema di firewall che tronca i parametri di pagina o
i cookie.
Bye.

 i cookie.
Però perché succede solo per quella directory? Tra l'altro in questo 
momento sto vedendo che con FF non ho più il problema (SID ha valore 
nullo), mentre con IE ancora ce l'ho...ovviamente senza aver cambiato 
niente sul server.
-- 
Giacomo

 con IE ancora ce l'ho...ovviamente senza aver cambiato niente sul server.
Il problema infatti non è del server, ma del browser utilizzato. 
Proprio ora stavo guardando le impostazioni di IE relative alla privacy 
e alla protezione. Dai un'occhiata anche tu là, a seconda del livello 
di privacy impostato, ti blocca o meno alcuni cookie.
Il perché alcune directory no e altre si, beh...si vede che alcune 
directory non gli piacciono per i suddetti motivi. :-)
rob4you


Aggiungo......prima di dire l'ultima parola....fai una bella ripulitura 
della cache, cookie, ecc ecc ecc... ;-)
--
rob4you

 della cache, cookie, ecc ecc ecc... ;-)
Provato...=(
Con IE ho ripulito i cookie, o messo la protezione minima (accetta tutti 
i cookie), ho chiuso e riavviato, ma vedo il SID appeso alla query string...
-- 
Giacomo

 cookie), ho chiuso e riavviato, ma vedo il SID appeso alla query string...
Ma il SID è lo stesso di quello che vedevi prima o uno nuovo?
Perché dovresti anche distruggere la sessione direttamente sul server 
(puoi addirittura andare a cercare dove è salvato il file di sessione, 
e buttarlo nel cestino). Su windows se non erro sta in qualche cartella 
tipo: C:\WINDOWS\Temp. Vedrai che ci saranno dei file che iniziano per 
sess_ e poi hanno l'id di sessione. UCCIDILIII! :-)
rob4you


Poi ripulisci di nuovo tutto sul browser, anche la cronologia.
rob4you

 sess_ e poi hanno l'id di sessione. UCCIDILIII! :-)
Il SID cambia sempre, cambiando la sessione.
-- 
Giacomo

Bella questa.
Carico la pagina con FF, vedo il SID nella query string, eppure tra i 
cookie compare il cookie del sito...ma il SID non dovrebbe apparire solo 
se il cookie non viene accettato?
Sto impazzendo...
-- 
Giacomo

Non so piùùù che diree. :-) Comunque, mi pare evidente che, se con FF 
hai un comportamento e con IE un altro, pur richiedendo la medesima 
pagina dello stesso webserver nella stessa area, php è "innocente".
Semplicemente, se il browser NON invia il cookie, allora la SID è 
definita e non vuota.
Da ciò si deduce che il browser non invia il cookie in quel caso.
Alessandro ti faceva notare anche di pensare al firewall. Nel caso, 
prova a disattivarlo per vedere che succede.
Aspetta...ma non è che nell'altra directory del server della intranet 
la variabile SID è nulla solo perché semplicemente quella pagina NON 
usa le sessioni? :-)
rob4you

 sessioni? :-)
Si, usa le sessioni anche quella pagina.
-- 
Giacomo



leggendo tutto il thread mi è rimasto un dubbio, forse l'hai detto, ma
mi potrebbe essere sfuggito... ma i vari test li stai facendo con lo
stesso script php??
se stai trovando differenze con lo stesso script (minimale, giusto per
provare le sessioni) allora escludendo qualche tipo di impedimento tipo
firewall, l'unica cosa che mi viene in mente è il permesso dato al
browser dei accettare sempre/mai i cookie da quel determinato "sito" (con
directory diverse in intranet che intendi? siti diversi?) 
se invece le differenze ci sono con script differenti o script non
minimali, allora le cose cambiano :-) potrebbe essere una scelta/svista
sul codice vero e proprio oppure un problema differente (tipo utilizzo di
frameset) che senza vedere il codice è impossibile da risolvere
come avrai capito non ho capito bene come stai affrontando il problema
:-D, naturalmente se l'hai già spiegato e non l'ho recepito io, me ne
scuso :-P

 scuso :-P
Script identico.
Ho scoperto proprio qual'era il problema:
la funzione "session_set_cookie_params" con il parametro "path" non 
nullo.  Ora chiamo la funzione senza il parametro e funziona.
-- 
Giacomo

 la funzione "session_set_cookie_params" con il parametro "path" non nullo.  
Tutto a posto quindi? Beh, tutto è bene quel che finisce bene. ;-)
rob4you

rob4you ha scritto:

Tutto a posto, e grazie tante per l'aiuto...=)
alla prossima
-- 
Giacomo