om man vill göra så att varje gång en användare loggar in på en sida så ska loginscriptet samtidigt logga ur användare som inte har varit aktiva t.ex 1 timme, finns det något smidigt sätt att lösa detta på? Alternativt att om användaren bara stänger ner sidan utan att logga ur eller går till en annan sida, går det att göra så att den användaren automatiskt loggas ur då? Hej! "If response.IsClientConnected=true then"logga ur användare
Tacksam för svar.Sv: logga ur användare
Det finns egentligen ingen kontakt mellan användaren och den webbserver där dina ASP-sidor ligger, HTML-protokollet är 'stateless' brukar man säga, dvs det har inget 'minne' av vad som hände tidigare. Däremot kan man i ASP använda sig av Session-objektet för att enkelt komma åt viss information om användaren. Lite förenklat så skapas en Session första gången en specifik användare besöker en sida på webbservern, varje användare har ett eget Session-objekt. Du kan styra hur länge detta objekt skall finnas kvar (hålla 'state') på webbservern, dvs efter hur lång tid som all data som du eventuellt sparat om användaren skall finnas kvar.
Detta kan du göra i t ex filen global.asa:
Sub Session_OnStart
' Sätt default session timeout-tid
Session.Timeout = 40
End Sub
I ovanstående exemplet så har jag ställt in att användaren kan vara inaktiv i 40 minuter innan session-objektet försvinner. Man kan även lägga till kod för vad som skall hända när ett Session-objekt termineras/avslutas i Sub Session_OnEnd
Om en användare stänger sin browser eller surfar till en annan webbserver så får inte dina ASP-sidor "reda på" detta, utan först när timeout sker enligt inställningen ovan så avslutas Session-objektet. Om användaren stänger av sin browser, men därefter öppnar en ny och återigen surfar till dina sidor så kommer han/hon att få ett helt nytt Session-objekt skapat för sig, det gamla ligger kvar till timeout. Vill du hålla reda på att det fortfarande är samma användare kan du t ex använda dig av cookies (om nu användaren tillåter lagring av cookies).
Du kan dock via ASP-kod skicka en förfrågan till användaren för att se om han/hon fortfarande är kvar, t ex:
If response.IsClientConnected=true then
response.write("The user is still connected!")
else
response.write("The user is not connected!")
end if
Hoppas detta hjälpte något!
// QezSv: logga ur användare
Nja, det kan du bara använd på en sida som en besökare efterfrågar, om sidan laddats färdigt och besökaren sedan lämnar siten så kan man inte köra koden och alltså inte kolla om besökaren är kvar.
Det vanligaste är att man använder session_onEnd, men jag och många andra upplever inte den funktione som 100% säker, så många görs som du, man lägger en tidssnutt i en databas för varje gång som en besökare laddar en sida, sedan kollar man i session_onStart (som fungerar bättre än session_onEnd) och loggar ut alla som inte har varit in på 40 minuter.
Problemet här är att man inte har riktigt bra koll på när en persoen försvinner från sida. Det finns en lösning på detta, som är lite kluddig men så här kan du göra.
1. skapa en frameset med 2 frames.
2. En frames är hela sidan och innehåller hela din site.
den andra framen skall inte synas och innehåller bara en body tag med kommandot onUnload() där man kallar på en ASP sida.
3. På denna ASP sida så loggar du ut användaren.
Hur fungerar detta? Jo så att när frames laddas så är besökaren på din sida, när sedan en besökare surfar mellan dina sidor, så laddar du dem i stora framen och den lilla ligger kvar. När sedan en besökare stänger browsern eller surfar till en annan sida genom att skriva i URL-fältet, kommer lilla framen att "avladdas" alltså kommer onUnload att köras, där kallar du på en ASP-sida som loggar ut personen.
Så nu har du nästan ett idiotsäkert system för vilka personen som är online på din sida.
- M