Newsgroup: it.comp.www.asp
Titolo: Problema: assegnazione dinamica della variabili di Sessione

Salve, avrei bisogno di un aiuto perché non riesce a funzionarmi una
cosetta...
cerco di fare la seguente operazione ma non mi riesce:
un form di richiesta trasmette nome_utente e password alla pagina di
autenticazione che verifica l'esistenza della coppia nel database ed
inizializza due variabili di sessione, AUTENTICATO e USER.
AUTENTICATO è posta a OK nel caso l'utente sia registrato, mentre USER
memorizza il nome utente ricavato dal database.
Bene, cioè male: questo valore della variabile di sessione viene perso
appena chiudo la connessione al database 8-(((.
E mi, vi, chiedo una volta impostata la variabile di sessione questa
non dovrebbe durare fin quando dura la sessione - a meno di timeout - 
del browser??? Che c'entra la connessione al database???
C'è qualcuno che mi può aiutare a risolvere la cosa...chre che tenere
aperto il db per tutta la sessione sia una soluzione poco pratica...o
no?
Grazie, marco pillitteri, palermo.

 del browser??? Che c'entra la connessione al database???
No, non c'entra nulla.
Una volta che l'hai memorizzata, l'hai memorizzata, e vale fino a che 
non cade la sessione, o viene distrutta, o viene rimemorizzata quella 
var.
Quindi devi avere qualche altro problema.
1) Il contenuto della var viene scritto bene, sì?
2) Le sessioni, sul tuo pc, ti funzionano, sì?
3) Stai lavorando su un unico sito/dominio, sì? Le sessioni, come i 
cookie, valgono SOLO per quel sito/dominio.
4) stai usando DUE var di sessione o un array?
5) sicuro che non tocchi la/le sessioni da altre parti?
Spezza le pagine con le procedure, stampati a video tutte le prove del 
caso, troverai il baco.

 ha scritto nel messaggio
news:dd10db99.0401...@posting.google.com...

Ciao. Posta la parte di codice che si occupa dell'autenticazione. Come dici
tu non ci dovrebbe essere correlazione tra db e variabili session.
Ciao
Alessandro Benedetti
http://www.sms.mio.it

 caso, troverai il baco.
Si, le due pagine sono conseguenziali e composte da poche istruzioni,
ho isolato il caso facendo tutte le stampe del caso, ma niente...
marco...

 marco...
Un solo dubbio: nella variabile session non è che inserisci l'intero
recordset e non il valore specifico del nome preso dal datbase? Sembra una
precisazione stupida ma era capitato molto tempo fa...
Ciao
-- 
AZ [Microsoft .NET MVP]
.NET Community: 
http://www.aspitalia.com/
Il mio blog: 
http://blogs.aspitalia.com/az/
Microsoft MVP: 
http://italy.mvps.org/
Sito personale: 
http://ciclismo.sitiasp.it/

 Ciao
Ho provato in entrambi i modi:
una volta alla variabile di sessione ho assegnato il valore preso
direttamente dal database con recordset...niente!
La seconda volta ho assegnato questo valore ad una variabile di
appoggio, ho chiuso la connsessione al db, ho settato la variabile di
sessione, quindi ho fatto il redirect alla seconda pagina...anche in
questo caso nulla!!
In ogni caso credo tu abbia individuato il problema, che altra strada
hai seguito???

ecco il codice:
****pagina 1*****
<%@ LANGUAGE=JScript %>
<!--#INCLUDE FILE="database.asp"--> 'questo file costruisce la stringa
di connsessione sdc
<% 
var user = Request.Form("nome_utente"); 'precedentemente c'è un
semplice
var pwd = Request.Form("password");     'e banale form a 2 campi 
conn.Open(sdc);
var sql = "SELECT * FROM utenti WHERE user = '" + user + "' AND
password = '" + pwd + "'";
var recSet = conn.Execute(sql);
if (!recSet.EOF) {
	Session("Autenticato") = "OK";
	liv = recSet("livello");
	usr = recSet("user");
	} else {
Response.Redirect("riprova_login.asp");
recSet.Close();
conn.Close();
}
if (Session("Autenticato") == "OK") {
	Session("utente") = usr;
	Session("livello") = liv
}
// Response.Write("variabile usr (con valore preso dal db)=" + usr +
"<br>");
// Response.Write("variabile liv (con valore preso dal db)=" + liv +
"<br>");
// Response.Write("variabile utente (di Sessione uguale a quella di
appoggio usr)=" + (Session("utente")) + "<br>");
// Response.Write("variabile livello (di Sessione uguale a quella di
appoggio liv)=" + (Session("livello")));
Response.Redirect("2.asp");
recset.Close();
conn.Close();
%>
*************************************************
****pagina 2 ****
<%@ LANGUAGE=JScript %>
<% 
var usr = Session("utente");
var liv = Session("livello");
Response.Write("Variabile usr (che richiama la variabile di Sessione
utente definita in 1.asp)=" + usr + "<br>");
Response.Write("Variabile liv (che richiama la variabile di Sessione
livello definita in 1.asp)=" + liv);
%>
************************************************
Per completezza invio anche il codice di database.asp:
<% var conn = new ActiveXObject("ADODB.Connection");
var sdc = "driver={Microsoft Access Driver (*.mdb)};";
var dbpath = Server.MapPath("mdb-database/generale.mdb");
sdc += "dbq=" + dbpath; %>
Il db ha una tabella che si chiama utenti a 2 campi:use e password.
*************************************************
Spero possa chiarirmi la cosa oppure suggerirmi un altro modo per
aggirare l'ostacolo.
Grazie, marco.

 Grazie, marco.
Ciao e fammi sapere.
Alessandro Benedetti
http://www.sms.mio.it

 hai seguito???
In quel caso è stato sufficiente scrivere (se ben ricordo):
Session("variabile")=rs.Fields("nome_campo").Value


 l'assegnazione delle variabili di sessione trasformando il codice così:
Già fatto...i due controlli li faccio perché ho usato le due variabili
di appoggio...la prima volta avevo scritto lo stesso codice che hai
suggerito tu...è il più normale e naturale.
I risultati sono sempre quelli descritti, la variabile di sessione è
corretta finché non chiudo la connessione al db...:-(((
altre strade per implementare la cosa...
marco.