Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Limitare numero utenti connessi

    Buongiorno.

    Vorrei un consiglio su questa questione:

    1) in una tabella di Access registro gli utenti che ogni volta si autenticano all'area riservata;

    2) visto i problemi di access sul numero contemporaneo di connessioni al db, vorrei che una volta raggiunti i 15-20 utenti connessi all'area riservata, non fosse più possibile accedere all'area riservata.

    Come posso fare?

    La tabella access è strutturata come img allegata.

    Grazie, saluti.
    MR
    Immagini allegate Immagini allegate

  2. #2
    Usi una variabile application dove memorizzi il numero di utenti connessi.
    Ogni nuovo utente incrementa di 1 il valore nella application.
    Al session timeOut decrementi il valore nella application.
    Al tentativo di login, prima leggi il valore nella application, se è inferiore al valore massimo allora entra, altimenti no.

  3. #3
    Originariamente inviato da Mems
    Usi una variabile application dove memorizzi il numero di utenti connessi.
    Ogni nuovo utente incrementa di 1 il valore nella application.
    Al session timeOut decrementi il valore nella application.
    Al tentativo di login, prima leggi il valore nella application, se è inferiore al valore massimo allora entra, altimenti no.
    Grazie, ma il sistema di autenticazione è basato sui cookies e non sulle application e/o session......

  4. #4
    Non ha alcuna attinenza.
    La varibile application ti serve per condividere con tutti gli altri utenti lo stato del numero di persone connesse.

  5. #5
    bene, grazie peril chiarimento.

    Posto un pò di codice asp affinchè la cosa sia più chiara e saperne di più:

    codice:
    strUser=request.form("user")
    strCode=request.form("codice")
    
    SET objRS = Server.CreateObject("ADODB.Recordset")
    objRS.ActiveConnection = cn
    
    strSql = "SELECT * FROM codici WHERE userName = '"& trim(strUser) &"' AND userCode = '"& trim(strCode) &"'"
    objRS.Open strSQL
    
    IF not objRS.EOF THEN 
    
    Session("uoat") = objRS("uoat")
    Session("ip") = Request.ServerVariables("REMOTE_ADDR")
    strEmail = objRS("userMail")
    data = date()
    tempo = time()
    
    Sql = "INSERT INTO ACCESSI "
    Sql = Sql & "(UOAT, "
    Sql = Sql & " INDIRIZZOIP, "
    Sql = Sql & " UTENTE, "
    Sql = Sql & " DATA, "
    Sql = Sql & " ORA, "
    Sql = Sql & " SESSIONID, "
    Sql = Sql & " strEmail) "
    Sql = Sql & " VALUES "
    Sql = Sql & " ('"&Session("uoat")&"', "
    Sql = Sql & " '"&Session("ip")&"', "
    Sql = Sql & " '"&strUser&"', "
    Sql = Sql & " #"&data&"#, "
    Sql = Sql & " '"&tempo&"', "
    Sql = Sql & " "&session.sessionID&", "
    Sql = Sql & " '"&strEmail&"')"
    cn.Execute(SQL)
    
    end if

  6. #6
    codice:
    maxUtenti = 20
    numeroUtenti = application("numeroUtenti")
    if numeroUtenti < maxUtenti then
    ' qui il tuo codice che fa il login etc...
    application("numeroUtenti") = application("numeroUtenti") + 1
    else
    response.write "E' stato raggiunto il numero massimo di utenti connessi
    end if
    Poi, nel Global.asa nel session_onEnd metti
    codice:
    application("numeroUtenti") = application("numeroUtenti") - 1

  7. #7
    grazie, ma non riesco ad inserire la tua parte di codice nella pagina asp della convalida/login... è una pagina un pò complessa con diverse condizioni if... posso inviarla in privato?
    nel global.asa ho fatto come hai detto...

  8. #8
    Dopo cn.Execute(sql)

  9. #9
    Originariamente inviato da Mems
    Dopo cn.Execute(sql)
    Non va...

    codice:
    if strUserCode <> 22 then
    
    Sql = "INSERT INTO ACCESSI "
    Sql = Sql & "(UOAT, "
    Sql = Sql & " INDIRIZZOIP, "
    Sql = Sql & " UTENTE, "
    Sql = Sql & " DATA, "
    Sql = Sql & " ORA, "
    Sql = Sql & " SESSIONID, "
    Sql = Sql & " strEmail) "
    Sql = Sql & " VALUES "
    Sql = Sql & " ('"&Session("uoat")&"', "
    Sql = Sql & " '"&Session("ip")&"', "
    Sql = Sql & " '"&strUser&"', "
    Sql = Sql & " #"&data&"#, "
    Sql = Sql & " '"&tempo&"', "
    Sql = Sql & " "&session.sessionID&", "
    Sql = Sql & " '"&strEmail&"')"
    cn.Execute(SQL)
    
    maxUtenti = 20
    numeroUtenti = Application("intActiveUserNumber")
    if numeroUtenti < maxUtenti then
    
    Application("intActiveUserNumber") = (Application("intActiveUserNumber") + 1 )
    
       else
       
    response.write "E' stato raggiunto il numero massimo di utenti connessi"
    
       end if 
    
    end if

  10. #10
    Che vuol dire "non va"? Che succede? Da errore?
    Entrano più persone del dovuto?
    Metti un response.write application("intActiveUserNumber")

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.