- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [ASP] problema session
-
[ASP] problema session
Ciao ragazzi mi sono appena iscritto a questo forum e colgo l'occasione per salutarvi.
Ho un problema che non riesco a risolvere con le session in asp. Spiegandomi meglio sto sviluppanda un sito in asp che prevede l'autenticazione per poter accedere a delle pagine riservate.
Qui di seguito riporto il codice della pagina index.asp dove viene effetuata l'autenticazione.<html> <body> <div align="center"> <% dim dbconn , rs set dbconn = [Server](http://www.megalab.it/forum/viewtopic.php?t=33018#).CreateObject("ADODB.CONNECTION") DBCONN.OPEN "provider=microsoft.jet.oledb.4.0; DATA SOURCE=" & SERVER.MAPPATH("utenti.mdb") IF session("ACCESSO") = false Then SESSION_FALSE() ELSE SESSION_TRUE() END IF %> <% SUB SESSION_FALSE()%> <% Bottone = request.Form("Bottone") IF Bottone <> "" then nome = request.form("nome") pass = request.form("pass") sSQL="select nome, pass from registrati where nome= '" & nome & "' and pass = '" & pass & "';" set rs=dbconn.execute(sSQL) if not rs.eof then session_true() session("ACCESSO") = true ELSE session("ACCESSO")= false SESSION_AUTENTICAZIONE() %> <P align="center"><%response.Write "[ACCESSO](http://www.megalab.it/forum/viewtopic.php?t=33018#) NEGATO NOME UTENTE O PASSWORD ERRATI!!"%></P> <%END IF ELSE session("ACCESSO")= false SESSION_AUTENTICAZIONE() END IF END SUB %> <% SUB SESSION_TRUE() %> <p align="center"> <% RESPONSE.Write " ACCESSO AREA RISERVATA " %></p> <br><br><br><br> <p align="center"><a href="riservato.asp">Pagina Riservata</a> <a href="index.asp">Logout<% session.abandon%></a></p> <% END SUB %> <% SUB SESSION_AUTENTICAZIONE ()%> <form action= "index.asp" method="post"> <p align="center"> </p> <h1 align="center"><span class="Stile2">Autenticazione</span></h1> <p align="center"> </p> <p align="center"><strong>Id Utente <input name="nome" type="text" size="24" maxlength="50"> </strong></p> <p align="center"><strong>Password <input name="pass" type="password" size="24" maxlength="50"> </strong></p> <p align="center"> <input type="submit" name="BOTTONE" value="Entra"> </p> </form> <% END SUB %> </body></html>
L'autenticazione dell'utente viene effettuata senza nessun problema se il login viene effetuato con successo allora la session acquista valore true , come potete vedere dal codice ho creato un link verso una pagina riservata nominata appunto riservato.asp che di seguito riporto anche il codice.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!DOCTYPE [HTML](http://www.megalab.it/forum/viewtopic.php?t=33018#) PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Documento senza titolo</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <% dim dbconn, rs set dbconn=server.createobject("adodb.connection") %> <% dbconn.open "provider=microsoft.jet.oledb.4.0; data source="& server.mappath("utenti.mdb") set rs = server.CreateObject("ADODB.RECORDSET") %> <% IF session("ACCESSO")= true THEN SESSION_TRUE() Else SESSION_FALSE() END IF %> <% SUB SESSION_TRUE() %> <p align="center"><%response.Write "PAGINA RISERVATA"%></p><br><br><br> <p align="center"><a href="index.asp">Logout<% session.abandon%></a></p> <% end sub %> <% SUB SESSION_FALSE() %> <div align="center"><b><font size="6">AREA RISERVATA PER ACCEDERE EFFETUARE IL LOGIN!!</font></b></div> <% END SUB%> </body></html>
In questa pagina si dovrebbe accedere soltanto se viene effetuato il login, ma appunto non lo fà e come se la session non tiene il valore true assegnato in precedenza dopo l'autenticazione.
Sapete come aiutarmi? Sto diventando matto non riesco ad individuare dove sbaglio. :bho:
-
Il problema sta qui:
<a href="index.asp">Logout<% session.abandon%></a></p>
Togli il session.abandon e funziona tutto.
Per abbandonare la sessione manda il link ad una pagina "logout.asp" dove fai il session.abandon e poi ridirigi alla pagina index.asp (solo successivamente).
Ricordati di mettere i Response.Expires = -1 su ogni pagina, altrimenti i browser le mettono in cache.
-
Adesso funziona :).
Però ho avuto delle difficoltà con il reindirizzare automaticamente la pagina di logout.asp verso la pagina index.asp.
Non è che gli potresti dare un'ultima occhiata?logout.asp:
<body> <%session.abandon%> <%response.Redirect ("/index.asp")%> </body>
-
Basta che levi lo slash. Response.Redirect ("index.asp")
e funziona.
-
Niente non và !!
Resta piantato nella pagina logout.asp
-
A me senza lo slash funziona.... che browser usi?
Controlla che non ti abbia messo in cache la vecchia pagina logout.asp (per aggiornare una pagina bloccando la cache credo che si faccia con CTRL+F5)
-
Come browser utilizzo IE7.
Devo controllare se effetivamente mi ha messo in cache la vecchia paggina, ma sul pc in cui lavoro ho avuto anche dei problemi e per adesso non posso verificare. Comunque ti farò sapere.
Grazie per l'aiuto
-
Tutto ok!!
Non funzionava perchè per sbaglio avevo messo qualche apice in più nel'istruzione e non riuscia ad eseguirla .
Adesso va più che bene.
-
grandioso. quando hai bisogno d'altro non esitare. un saluro
-
@SeraphimFoA said:
grandioso. quando hai bisogno d'altro non esitare. un saluro
Salve, sono nuovo nel forum. Scusate se mi intrometto in una discussione magari vecchia, ma io ho lo stesso problema di fare il logout utente.
Ho provato a fare esattamente quanto detto sopra ma non mi riesce di fare Logout, reindirizzo alla mia pagina che in realtà è un FRAME con la sezione menù del sito e che continua a riportarmi l'utente loggato precedentemente. Insomma anche dopo avere creato una pagina in cui fare session.abandon e aver reindirizzato al mio frame menù mi trovo sempre lo stessoutente.
Il miocodice è:
lato menù:if request.form("sublogout") = "Logout" then session.Abandon session("user")="" session("pwd")="" Response.Redirect "abbandona.asp" else ecc ...ecc
mentre sulla pagina abbandona :
<body> <% session.abandon response.Redirect ("menu.asp") %> </body>
mi ricarica menu.asp ma non cambia l'utente.
-
Nel tuo caso la pagina logout.asp non ha importanza, perchè le istruzioni vengono eseguite all'interno dell' IF.
Ma nella pagina menu.asp come avviene la verifica dell'utente?
-
Si, ci devi mosatrare menu.asp
e sopratutto hai messo i response.Expires nella pagina menu? Perché potrebbe essere tranquillamente un problema di cache.
-
@SeraphimFoA said:
Si, ci devi mosatrare menu.asp
e sopratutto hai messo i response.Expires nella pagina menu? Perché potrebbe essere tranquillamente un problema di cache.
Salve, grazie delle risposte e scusate il ritardo nella mia risposta.
Il problema l'ho risolto così:if request.form("sublogout") = "Logout" then session("user")="" session("pwd")="" Response.Cookies("ddvBO")("UserID") = 0 Response.Redirect "abbandona.asp" else ecc......ecc..
in pratica utilizzo i cookies.
Però tutto questo l'ho fatto inviando dei valori da INPUT type=submit eccetera. Adesso per rendere più gradevole anche l'estetica ho provato a sostituire i type=submit con Type=image, riesco a fare bene la Login ma non riesco più ad inviare il valore value="Logout" a quel pezzo di codice scritto sopra che mi chiude la session. Avete un'idea di come posso inviare il value per entrare nel codice di logout scritto sopra ??
Grazie a voi.
-
ma sei il valore per il logout lo passi nella querystring?