Newsgroup: it.comp.www.php
Titolo: Due sessioni contemporanee

Un saluto a tutti. Ho una piccola applicazione che controlla le abilitazioni 
dell'utente in ogni pagina verificando il contenuto di una variabile 
definita all'atto del login con l'uso delle sessioni. Tutto ok. Da poco ho 
creato una seconda applicazione che sfrutta lo stesso sistema ma definendo 
una variabile diversa. Ho notato che se lo stesso utente apre le due 
applicazioni in contemporanea nel passaggio tra le pagine si confondono le 
due applicazioni per cui da degli errori. E' come se la variabile di 
sessione fosse la stessa. Come devo fare ?? Spero di essermi spiegato. 

 ha detto:

Probabilmente sbagli qualcosa, posta un pò di codice.
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it


Ho tolto qualcosa ma il senso c'e'
<?
include ("config.inc.php");
    mysql_connect($host,$user,$password) or die ("Non riesco a collegarmi a 
MySql")  ;
          mysql_select_db("controlli") or die ("Non trovo il database 
CONTROLLI");
   $query = "select FUNZIONARIO AS 
chi,TIPO,TEAM,concat(duplica,adesione,operazione,assegna,modifica,archivia,attcod,verifica)as 
auto from ELENCOFUNZIONARI where (CF = '$cod' and pass = '$passi')" ;
   $query2 = "select FUNZIONARIO AS computerdi from ELENCOFUNZIONARI where 
IP = '$REMOTE_ADDR' " ;
    $risultato = mysql_query($query) or die (mysql_error());
   $risultato2 = mysql_query($query2) or die (mysql_error());
    if ((mysql_num_rows($risultato) == 0) OR (mysql_num_rows($risultato2) == 
0) or (mysql_result($risultato,0,2)==0 and mysql_result($risultato,0,1)==2))
    {
    echo "<script>alert('Utente non autorizzato');</script>";
   echo "<script>window.location.href = 'index.php?rito=$cod';</script>";
    exit;
    }
    else
    {
        session_start();
           session_register("tipoco");
    $tipoco= mysql_result($risultato,0,1);
nelle pagine successive dopo
 session_start();
controllo la struttura della variabile $tipoco per stabilire le 
autorizzazioni
funge ma considerato che nella seconda applicazione genero una variabile
$seconda che controllo a sua volta nelle pagine
mi si impiccia tutto quando le uso in contemporanea
Ti ringrazio e considera che da come si vede sono agli inizi . :-) 

Maicol wrote:

Non usare session_register(), utilizza $_SESSION.
Dipende tutta da come effettui il controllo tra le due variabili.
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 probabilmente non ho capito cosa mi hai detto.
Se il session_name, il session_id e il dominio sono gli stessi, le due
"applicazioni" condividerannoi gli stessi dati. Se non fai attenzione a
come controlli le variabili potresti incappare ad eseguire il codice di
una applicazione in un'altra e cosi' via (se ad esempio le due
"applicazioni" hanno lo stesso script come punto di ingresso), oppure
potresti utilizzare i dati di sessione di una applicazione in un'altra
(con grossi problemi di consistenza etc, ad esempio se salvi l'IDUtente
inizierai a vedere comportamente strani etc.).
IMHO prova ad utilizzare un session_name() diverso per le due
applicazioni e vedi se ci sono ancora problemi di "mescolamento".



Ti ringrazio per la tua disponibilità, e sei stato chiarissimo ma pur 
consultando il manuale in merito a session_name() non ho compreso bene in 
che modo evitare il "mescolamento".Potresti farmi un piccolo esempio?? 
Grazie . :-)) 

con session_name() e poi lanciare session_start() . Giusto?? 

 nome con session_name() e poi lanciare session_start() . Giusto?? 
Si, se il problame e' quello dovrebbe essere sufficiente usare un
costrutto tipo questo per evitare i comportamenti anomali che hai
riscontrato:
session_name('APP1');
session_start();


 Ti ringrazio molto ho risolto.
Scusa se approfitto...:-) la durata della sessione dipende solo da 
session_cache_expire=180 del php.ini o anche da altro. Nel mio caso dura 
molto meno e quindi l'utente autenticato dalla variabile inizializzata da 
session_start() viene buttato fuori dopo pochi minuti di inattività. O 
forsel'inattività ha un parametro suo??

 minuti di inattivit`. O forsel'inattivit` ha un parametro suo??
session.cache_expire non ha nulla a che vedere con il tempo di durata
della sessione, indica solo per quanto tempo mantenere in cache le
pagine che usano le sessioni.
La durata della sessione dipende da come viene propagata (es tramite
cookie), e da session.gc_maxlifetime, comunque IMHO il tuo problema
potrebbe dipendere da altri fattori relativi al codice che utilizzi od
alla chiusura del browser etc.



Grazie approfondirò la questione.