Hejsan!
Jag har ett litet problöm med ett sript som skall ändra värdet i en databas då någon loggar in.
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("db.mdb")
SQL = "UPDATE anv SET online = '1' WHERE anv = '" & Session("anv") & "'"
Set rs = db.Execute(SQL)
SQL = "SELECT * FROM anv"
Set rs = db.Execute(SQL)
%>
När man loggar in så startar en session som lagrar användarnamnet, men det funkar inte. Den verkar inte känna att
det är just "den" personen den skall ändra värdet på, eftersom den ändrar värdet 0 till 1 på alla i databasen.
Någon som vet?
Mvh Magnus Fernström
Jesper TMedlem sedan nov. 20017 144 inlägg 1. finns det något värde i session("anv")?
2. Vad är det för datatyper i kulumnerna?
3. Heter både tabellen och en kolumn "anv"?
1.Ja, jag har prövat att skriva ut sessionens värde, och man får då fram namnet man angav vid inloggningssidan.
2. Text
3. Ja
Det ordnade sig!
Men nu har ännu ett problem dykt upp.
När man är inne så har man alltså värdet 1 och är online.
När man skall logga ut trycker man på en länk och skickas sedan
vidare till sidan som rensar sessionen och sätter tillbaks värdet till 0 i databasen. Allt är frid och fröjd än så länge Men när man har varit inaktiv en viss tid så vill jag att man skall loggas ut automatiskt. Detta är heller inte något problem förutom att värdet då inte byts tillbaks till noll.
Eftersom Session.TimeOut rensar så följer inte något värde med. Och koden som sätter tillbaks värdet till 0 ser ut så här:
<%
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("db.mdb")
SQL = "UPDATE members SET online = '0' WHERE anv = '" & Session("anv") & "'"
Set rs = db.Execute(SQL)
%>
<%
Session("inloggad") = "False"
Response.write "Utloggad!"
Session.Abandon
%>
Den behövar alltså användarnamnet som den fick när man loggades in. Men detta går ju inte eftersom det är borta.
Sedan vill jag att den skall logga ut sig själv när man stänger webbläsarfönstet. Hur fixas detta? Alltså hur fixar jag hur sessionen rensas och värdet sätts tillbaks på 0 när man stänger ner webbläsarfönster så att INGA av mina sidor längre är öppna?
Hoppas nån begriper :D
Mvh Magnus Fernström
mrblondeMedlem sedan aug. 20012 349 inlägg Det går inte att få det att hända automagiskt.
Föreslår istället att du sätter en tids stämpel i databasen varje gång din användare surfar till en sida. Sen gör du även en koll på varje sida och ändrar i databasen online = 0 för de användare som inte har en tidsstämpel som är äldre än t ex 20 minuter.
Men om man har session timeout, rensas inte sessionen efter den tid man angivit även om besökaren lämnat sidan?
Så att det försvinner efter en stund i alla fall.
@ndersMedlem sedan juni 200032 969 inlägg
magnusfernstrom skrev:
Men om man har session timeout, rensas inte sessionen efter den tid man angivit även om besökaren lämnat sidan?
Så att det försvinner efter en stund i alla fall.
Jo, sessionsvariablerna dör, ja.
Ok, kan man inte göra Något för att få den att känna av att just den sessionen har dött då?
@ndersMedlem sedan juni 200032 969 inlägg Jo, man kan prova sökfunktionen... :P
Haha som om jag inte gjort det ;)
Men oftast så hittar jag endast obegripliga svar!
Länk till något som passar detta?
Jag har nu sökt men hittar inget lämpligt!
Något tips/länk/kod?
mrblondeMedlem sedan aug. 20012 349 inlägg finns en funktion som heter Session_OnEnd som man kan ha i global asa. Den funktionen körs när sessionen dör.
Den är känd för att ibland vara lite buggig. Förhoppningsis är den inte det på iis6 nuförtiden, men jag vet inte. Någon mer kompetent kan kanske tala om det för oss.
Min personliga tanke är att inte lite på session_OnEnd utan använda sig av en databas istället, men det är ju mer komplicerat.
Jo, men hur skall man gå tillväga för att göra det då?
Databasen alltså!
OveRRidEMedlem sedan feb. 200112 078 inlägg Jag tänkte att denna tråd kunde vara av intresse om du beslutar dig för att använda global.asa och Session_onEnd för ändamålet.
Okej, tack OveRRidE, men global.asa fungerar inte på brinkster :(
men tack så hemskt mycket i alla fall.
mvh Magnus Fernström