Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    Problema area riservata e uso dell'oggetto Session

    Ho creato un’area riservata dove si può accedere dopo la verifica della correttezza di username e password presenti nel database. E fin qui tutto funziona.

    Ho poi aggiunto una cosa: voglio che alcuni utenti (admin e pippo) vedano delle cose che gli altri non possono vedere. La cosa sembra funzionare, infatti, se si fa il login con i dati di admin (o pippo), nel pannello di controllo si vedono 5 voci del menu, mentre con i dati degli altri se ne vedono solo 4. C’è però un problema: io faccio il login come admin, vedo le 5 voci del menu. Seguo alcuni link (sempre all’interno dell’area riservata), ma quando poi torno nel pannello di controllo, ne vedo solo 4.

    Credo di aver capito di dover "portarmi dietro la sessione" e pensavo di usare in qualche modo l'oggetto Session nel codice del login, ma non so proprio come fare.


    Questo è il codice del login (nel database c’è una tabella che si chiama login con campi: utente e password):

    <%

    Dim utente, password

    utente = Request.Form("utente")
    password = Request.Form("password")
    Set RSlogin = connect.Execute("Select * From Login Where utente = '"&utente&"' And password = '"&password&"'")

    If Not RSlogin.EOF Then
    Session("entra") = True
    end if
    if Session("entra") = True then

    %>


    Il pannello di controllo ha alcuni link e due “include”: il file di login ed un file con il codice per la connessione al database.

    Qualcuno mi sa dare una mano, please???

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La sessione se non diversamente specificato dura 10 minuti.
    Ogni pagina deve avere il controllo sull'esistenza della sessione.

    Se torni nel pannello e non vedi i menu che ti spettano la sessione si è modificata.

    Roby

  3. #3
    certo, oltre alla session("entra") devi portarti una session che identifica il livello dell'utente

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Originariamente inviato da varrilaro
    certo, oltre alla session("entra") devi portarti una session che identifica il livello dell'utente

    ciao
    Infatti, avevo immaginato, ma non so come farlo. Devo fare una modifica al login, immagino, ma dove e come?

    Riporto il mio login.

    <%

    Dim utente, password

    utente = Request.Form("utente")
    password = Request.Form("password")
    Set RSlogin = connect.Execute("Select * From Login Where utente = '"&utente&"' And password = '"&password&"'")

    If Not RSlogin.EOF Then
    Session("entra") = True
    end if
    if Session("entra") = True then

    %>

    E poi mi chiedevo se devo mettere qualcosa anche nelle altre pagine dell'area riservata, oltre all'include con il file di login.

    Thanks!

  5. #5
    Allora, se non hai un campo nel database che identifichi il livello dell'utente: ad esempio 1 Admin, 0 Utente...la soluzione che mi viene in mente è questa:

    if RSLOGIN("utente") = "admin" then
    Session("livello") = "admin"
    else
    Session("livello") = "utente"
    end if

    e nella pagina di richiamo dove hai il menu



    Voce 1</p>


    Voce 2</p>


    Voce 3</p>


    Voce 4</p>
    <%
    if Session("livello") = "admin" then
    response.write("

    Voce5</p>")
    end if
    %>

    se hai invece una voce livello nel database assegni alla session("livello") quella voce

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Originariamente inviato da varrilaro
    Allora, se non hai un campo nel database che identifichi il livello dell'utente: ad esempio 1 Admin, 0 Utente...la soluzione che mi viene in mente è questa:

    if RSLOGIN("utente") = "admin" then
    Session("livello") = "admin"
    else
    Session("livello") = "utente"
    end if

    e nella pagina di richiamo dove hai il menu



    Voce 1</p>


    Voce 2</p>


    Voce 3</p>


    Voce 4</p>
    <%
    if Session("livello") = "admin" then
    response.write("

    Voce5</p>")
    end if
    %>

    se hai invece una voce livello nel database assegni alla session("livello") quella voce

    ciao
    Innanzitutto, grazie per la risposta.

    Non ho un campo nel database che mi identifichi il livello degli utenti, ma se può essere utile lo posso aggiungere.

    Supponendo, invece, di procedere senza il suddetto nuovo campo, potresti spiegarmi dove inserire il codice da te scritto? Devo inserirlo da qualche parte nel mio codice di login o cosa?

  7. #7
    devi inserire dopo questa parte nel codice che hai postato:

    If Not RSlogin.EOF Then
    Session("entra") = True
    end if

    il codice

    if RSLOGIN("utente") = "admin" then
    Session("livello") = "admin"
    else
    Session("livello") = "utente"
    end if

    e nella pagina dove hai il menu l'altra parte:



    Voce 1</p>


    Voce 2</p>


    Voce 3</p>


    Voce 4</p>
    <%
    if Session("livello") = "admin" then
    response.write("

    Voce5</p>")
    end if
    %>

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Dopo diversi tentativi, il file di login è questo:

    <%
    Dim utente, password
    utente = Request.Form("utente")
    password = Request.Form("password")
    Set RSlogin = connect.Execute("Select * From Login Where utente = '"&utente&"' And password = '"&password&"'")
    If Not RSlogin.EOF Then
    if RSLOGIN("utente") = "admin" then
    Session("livello") = "admin"
    else
    Session("livello") = "utente"
    end if
    end if
    %>

    Il risultato è questo:
    1. Faccio il login come admin e vedo i link che effettivamente dovrebbe vedere solo l'admin.
    2. Faccio il login con un'utenza diversa da admin e riesco a girare per l'area riservata, ma non vedo i link che dovrebbe vedere solo l'admin.
    3. PROBLEMA : adesso posso fare il login scrivendo qualsiasi cosa mi venga in mente, entro sempre!!! Cos'ho sbagliato ancora???

  9. #9
    devi mantenere anche la session("entra") e all'inizio delle pagine riservato inserire:

    if Session("entra") <> true then
    response.redirect("login.asp")
    end if

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Varillaro, grazie per il tuo aiuto, ma ancora non funziona, evidentemente devo aver fatto io un po' di confusione o meglio, probabilmente non ho dato tutte le informazioni necessarie per aiutarmi.

    Provo a dare un quadro completo della situazione.

    1. Ho un file admin.asp, nel quale c'è una form dove bisogna mettere username e password. L'action della form è: default.asp.

    2. Il file default.asp è il famoso (vedi miei post precedenti in questo topic) "pannello di controllo" dove ci sono 4 voci per tutti gli utenti, mentre 5 per l'admin.

    3. Il file di login.asp (originale) è questo:
    <%
    Dim utente, password
    utente = Request.Form("utente")
    password = Request.Form("password")
    Set RSlogin = connect.Execute("Select * From Login Where utente = '"&utente&"' And password = '"&password&"'")
    If Not RSlogin.EOF Then
    Session("entra") = True
    end if
    if Session("entra") = True then
    %>


    4. Tutti i file in area riservata hanno poi:
    (file con le stringhe di connessione al database)

    file che contiente questo codice:
    <% else
    response.Redirect("admin.asp")
    end if %>


    Il mio problema è: voglio che alcuni utenti (per esempio "admin"), nel pannello di controllo vedano delle voci (dei link) che gli altri utenti non possono vedere.

    La prima cosa che avevo provato era di mettere i link da far vedere solo all'admin, all'interno di un if, in questo modo:
    <% If utente="admin" Then
    Response.Write("pippo")
    End If
    %>

    Questo, all'inzio, sembrava funzionare, infatti solo admin vedeva la voce in più, mentre gli altri non la vedevano.
    Successivamente ho scoperto che:
    1. Loggandomi da "admin", all'inizio vedevo i 5 link ma, dopo aver girato in altre pagine in area riservata, una volta tornato su default.asp, vedevo solo 4 link, come se fossi un utente "normale".
    2. Loggandomi come utente "normale" non vedo i 5 link, ma se conosco l'indirizzo della pagina alla quale non dovrei poter accedere, posso farlo liberamente.

    Da ciò, credo di aver capito, di aver creato un'area riservata, ma che non riesce a distinguere gli utenti, cioè, non riesco a "portarmi dietro la sessione" nelle diverse pagine dell'area riservata. Ho provato a mettere nella pagina default.asp un response.write(utente) e quello che ottengo è il nome dell'utente visualizzato al login, ma dopo il giro in area riservata, il nome non appare più. Da qui l'oggetto del presente topic: "Problema area riservata e uso dell'oggetto Session".

    La strada che ho tentato di percorrere seguendo gli aiuti non mi hanno però portato alla soluzione...
    Need help, please!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.