Visualizzazione dei risultati da 1 a 8 su 8

Discussione: login univoco

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    2

    login univoco

    salve, avrei un problema!!!

    ho l'esigenza di creare uno script per il riconoscimento univoco degli utenti.

    esempio:

    se in un client mi loggo come USER: ADMIN e PWD: ADMIN
    un altro client non si può loggare con lo stesso nome contemporaneamente.

    mi aiutate a risolvere questo problema?

    grazie, spero di essere stato chiaro

    saluti

  2. #2
    Fai una query preventiva prima di autorizzare il login come valido verificando se sulla tabella degli utenti collegati (che dovrai quindi popolare in fase di login), non ci sia già presente un ADMIN con USER e PASSWORD precedentemente inserite.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    2

    ok

    ok io popolo la tabella degli utenti collegati,
    e quindi se esiste non lo faccio entrare

    il problema che mi pongo e quando l'utente esce dal sito senza il logout ma semplicemente chiudendo la finestra di iexplore

    come fare?

  4. #4
    Uso uno script in merito che appunto popola al login una tabella di utenti_connessi e la cancella, al logout ma anche dopo 15 minuti di inattività dell'utente.

    Eccolo:

    codice:
    <%
    'se la sessione è scaduta allora utilizza il cookie per IdUtente e username
    IdUtente = Session("Id_utente")
    settato = Session("username")
    Admin = Session("Flag_admin")
    if Admin = "N" then
       Admin = "-"
    end if
    
    'permette di recuperare l'esatta sezione 
    'in cui l'utente si trova in un determinato momento
    if IdUtente <> "" and settato <> "" then
       mappatura = Session("mappatura")
       'se la provenienza non è valorizzata 
       'allora l'utente è sulla Home Page 
       if mappatura = "" then
    	  mappatura = "home_page"
       end if
    end if
    'response.write(dove)   
    
    'Funzione per la trasformazione della data a seconda dell'LCID
    '1 parametro la data formato testo o formato data, 
    '2 nNamedFormat sono i formati data accettati dalla funzione nel motore vbscript FormatDateTime
    '3 LCID (i + usati sono 1033 per le date in inglese e 1040 per la data in italiano
    Function FormatDateTimeLCID (str, nNamedFormat, nLCID)				
    	dim strRet, nOldLCID								
    	strRet = str								
    	If (nLCID > -1) Then nOldLCID = Session.LCID					
    	On Error Resume Next							
    	If (nLCID > -1) Then  Session.LCID = nLCID						
    	If ((nLCID < 0) Or (Session.LCID = nLCID)) Then	strRet = FormatDateTime(str, nNamedFormat)
    	If (nLCID > -1) Then Session.LCID = nOldLCID
    	FormatDateTimeLCID = strRet							
    End Function
    
    'apro la connessione
    'set connessioneLett = server.createobject("adodb.connection")
    'connessioneLett.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mdb-database/InterMania.mdb")
    
    'solo se l'utente è loggato eseguo lettura preventiva ed eventualmente insert
    if len(IdUtente) > 0 then
    
       sql= "Select * from utenti_connessi where Id_utente_connesso = " & IdUtente
       Set objrs = Server.CreateObject("ADODB.Recordset")
       objrs.Open sql, objConn 
       				   'connessioneLett
    
       if objrs.eof then
    
    	   sql = "INSERT INTO utenti_connessi(Id_utente_connesso, Utente_connesso, Data_connessione, Amministratore, Mappatura) " &_ 
    	   		 "VALUES(" & IdUtente & ", '" & settato & "', Now(), '" & Admin & "', '" & mappatura & "')"
      
       	   objConn.execute(sql)
    	   'connessioneLett.execute(sql)  
       end if
    
       objRs.Close
       set objrs = nothing
    
    end if
    
    'se lo trova, fa l'update solo se l'utente è loggato
    if len(IdUtente) > 0 then
    	sql = "UPDATE Utenti_connessi set Data_connessione = Now(), " & _
    		  " Mappatura = '" & mappatura & "'" & _
    		  " WHERE Id_utente_connesso = " & IdUtente 
    	objConn.execute(sql)
    	'connessioneLett.execute(sql)
    end if
    
    'cancello l'utente dalla tabella degli utenti connessi (impostando data e ora nel formato corretto)
    differenza = dateadd("n", -15, now())
    dataInvertitaInglese = FormatDateTimeLCiD(differenza,2,1033)
    soloOrario = FormatDateTimeLCiD(differenza,3,1040)
    strSQL = "DELETE * FROM Utenti_connessi WHERE Data_connessione < #" & dataInvertitaInglese & " " & soloOrario & "#"
    objConn.execute(strSQL)
    'connessioneLett.execute(strSQL)
    'connessioneLett.close
    'set connessioneLett = nothing
    %>
    E' un esempio adatto alle mie esigenze, ma con qualche ritocco va bene anche per te.
    La parte in grassetto è quella che ti esegue la DELETE senza il logout.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  5. #5
    @Maximus... scusa Max.... perchè popolare una tabella? potresti usare il global asa tutalpiù per sapere quanti/quali utenti ci sono no (teorizzo perchè il global.asa non l'ho mai usato)? comunque per certi versi è anche meglio... te la filtri tu come vuoi... lo script è utilissimo, io aggiungerei una parte con i Cookies, anche...

    per quanto riguarda il Login univoco... io faccio così...

    Durante l'iscrizione di un membro controllo che USERNAME sia unico, EMAIL sia unica...

    ovvero:

    (avrò gia settato RS come recordset precedentemente)

    sql="select * from login where username = '"& username_inserito &"'"
    rs.open sql, conn, 3, 3

    if not (rs.eof or rs.bof) then
    'l'iscrizione continua
    else
    'segnala l'errore
    end if

    ....poi si ripete per verificare annidando magari oportunamente gli IF per tirarne fuori un codice un pò "pulito"

    ma si sa che i metodi per fare la stessa cosa sono parecchi... quindi tutto rigorosamente "personale"...
    Grazie sempre di tutto!!!
    Alberto

  6. #6
    Uso quel codice perchè io con il global.asa ebbi problemi in merito.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  7. #7
    anche a me l'avevan sconsigliato... e quindi evitavo direttamente di far la conta degli utenti
    Grazie sempre di tutto!!!
    Alberto

  8. #8
    Posso dire che quel codice di su, comunque, non rallenta affatto la velocità di caricamento delle pagine. ;-)
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.