|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2000
Messaggi: 191
|
Codice da richiamare automaticamente quando si cambia pagina
Salve a tutti,
sto cercando di realizzare un sistemino in ASP per vedere se un utente si connette a un'area riservata da due posti diversi con lo stesso user e password. Ho realizzato un db con i seguenti campi: Username Password Lock Quando l'utente si connete metto il lock a 1 (originariamente è a 0) in maniera tale che la stessa coppia user+password non possa più essere sfruttata. Il problema sta quando l'utente si disconnette. Se infatti utilizza la pagina di log-out non ci sono problemi perchè da qui rimetto il lock a 0. Se invece chiude il browser o cambia indirizzo senza passare dalla pagina di log-out il lock rimane a 1 e il sistema non serve più a niente perchè la coppia user+password rimane bloccata per sempre. Mi servirebbe un pezzo di codice da eseguire automaticamente quando si chiude il browser o quando si cambia pagina... Esiste qualcosa del genere o sto delirando? E, se non esiste, qualcuno sa come si risolve un problema di questo tipo (anche reingegnerizzando il db se serve)? Grazie in anticipo |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
|
onUnload forse esiste, ma se dovesse esistere non ci fare affidamento
il problema dei login protetti si risolve mantenendo l'informazione di loggato/sloggato non su db ma nella sessione, che ha una durata massima impostabile (mi sembra che il default sia 20 minuti) cmq su questo argomento ci sono dozzine di articoli sul web, alcuni anche molto validi, ma non ho link sotto mano |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Nel tag body c'è l'evento onunload...ma non funziona molto bene...
Unica alternativa è aspetta che la sessione muoia automaticamente dopo il timeout (messo a 20 minuti)...ma comunque crea problemi (per 20 minuti uno non si può riconnettere)... Puoi fare in modo di invalidare l'auteticazione di un utente già connesso nel caso che un altro utente entri con lo stesso account... Puoi comunicarlo al primo utente visualzzando un messaggio del tipo "Un altro utente si è connesso con questo account, nel caso la situazione non sia stata prevista inviare una richiesta di cambio password" o qualcosa del genere ![]() Per fare una cosa del genere basta tenersi una tabella contenente: UserID SessionID Stato Il SessionID si recupera da Session.SessionID (mi sembra)... Per ogni pagina basta verificare che per qullo UserID e per quel SessionID lo stato sia valido... Nel caso un altro utente si logghi con un certo UserID mette come stato non valido tutti gli utenti con lo stesso UserID nella tabella... Nel caso che uno stato non sia valido si distrugge la sessione, si invia un messaggiod el tipo sopra e si canclella dalla tabella la riga relativa a quella sessione... |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Dec 2000
Messaggi: 191
|
Vediamo se ho capito bene: in ogni pagina dovrei fare una query al database per avere le informazioni sullo stato della sessione per un utente? E, in caso affermativo, le prestazioni non ne risentono?
Grazie per l'aiuto |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
|
se usi correttamente le variabili di sessione e quelle di applicazione fai tutto senza interpellare il db
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Dec 2000
Messaggi: 191
|
Scusate se vi stresso ancora, ma sono proprio agli inizi. Confermatemi questo: le variabili di sessione devono essere lato server, cioè dovrei agire sul file global.asa?
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
No...nel global.asa non è detto che tu debba agire...
Le variabili di sessione sono già automaticamente lato server ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:37.