• User Newbie

    [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">&nbsp;</p> 
    <h1 align="center"><span class="Stile2">Autenticazione</span></h1> 
     <p align="center">&nbsp;</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 :arrabbiato: non riesco ad individuare dove sbaglio. :bho:


  • User Attivo

    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.


  • User Newbie

    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>
    
    

  • User Attivo

    Basta che levi lo slash. Response.Redirect ("index.asp")

    e funziona.


  • User Newbie

    Niente non và!!
    Resta piantato nella pagina logout.asp :mmm:


  • User Attivo

    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)


  • User Newbie

    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 🙂


  • User Newbie

    Tutto ok!!
    Non funzionava perchè per sbaglio avevo messo qualche apice in più nel'istruzione e non riuscia ad eseguirla :lol:.
    Adesso va più che bene. :ciauz:


  • User Attivo

    grandioso. quando hai bisogno d'altro non esitare. un saluro


  • User Newbie

    @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.


  • User

    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?


  • User Attivo

    Si, ci devi mosatrare menu.asp

    e sopratutto hai messo i response.Expires nella pagina menu? Perché potrebbe essere tranquillamente un problema di cache.


  • User Newbie

    @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.


  • Moderatore

    ma sei il valore per il logout lo passi nella querystring?