24. april 2001 - 19:43Der er
25 kommentarer og 2 løsninger
fatter det ikke
Cyberfessor er igang med at lave noget for mig og vi/han/jeg kan ikke forstå hvorfor bliver kun noget af følgende kode kørt i forbindelse med session.abandon
Sub Session_OnEnd Application(\"BrugereOnline\") = Application(\"BrugereOnline\") - 1 if NOT session(\"useronline\") = \"Guest\" then Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"/log/db.mdb\") conn.execute(\"DELETE from user_log where (user = \'\"& session(\"useronline\") &\"\')\") conn.close set conn = nothing session(\"useronline\") = \"\" end if End Sub Burning Ice @ Work: (7:49 PM) det der bliver kørt er Application(\"BrugereOnline\") = Application(\"BrugereOnline\") - 1
kasper>> hvis du nu havde læst spm ordenligt igennem havde du set at det kun er Application(\"BrugereOnline\") = Application(\"BrugereOnline\") - 1 der bliver kørt... resten, dvs. f NOT session(\"useronline\") = \"Guest\" then Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"/log/db.mdb\") conn.execute(\"DELETE from user_log where (user = \'\"& session(\"useronline\") &\"\')\") conn.close set conn = nothing session(\"useronline\") = \"\" end if bliver åbenbart ignoreret
når man kommer ind på siden og ens cookie er tom bliver session sat til guest og der bliver ikke indsat noget i userlog Når man så logger ind får man en cookie, ens navn og tidspunkt bliver skrevet i user_log og session(\"useronline\") bliver sat til ens username Når man trykker på log ud blive ens cookie samt at session.abandon køres som jo trigger session_onend i global.asa
problemet er bare at koden der skal slette brugeren fra user_log ikke kørers, som den jo ellers burde... see the problem??
Mit bud vil være at som følge af Session.Abandon så er Sesssion(\"whatever\") = \"\" Fordi den tømmer alle Session\'s... Og derfor vil resten af scriptet ikke blive kørt...
Eller skrevet mere forståligt, den kan ikke slette denne conn.execute(\"DELETE from user_log where (user = \'\"& session(\"useronline\") &\"\')\") da session(\"useronline\") er tom...
det var også det jeg tænkte... derfor prøvede jeg at bruge conn.execute(\"DELETE from user_log where (user = \'cyberfessor\')\") men det hjalp heller ikke...
ja... og så virker det fint... problemet er bare at hvis brugere ikke bruger den men bare forlader sitet, ja så var det jo meningen at scriptet skulle køres ved timeout
okaaay.. well.. hvorfor virker følgende så fint ??
Sub Session_OnStart
Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath (\"/log/db.mdb\") set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"SELECT * FROM user_log\" rs.open strSQL, conn, 1, 3 rs.addnew rs(\"user\") = request.cookies(\"pauli\")(\"username\") rs(\"time\") = now rs.update rs.close set rs = nothing conn.close set conn = nothing end if End Sub
og nej... det hjalp heller ikke :(
det sjove er at jeg faktisk kan skrive ALT mellem himmel jord i stien til db... noget kunne tyde på at den slet ikke kører koden :(
auch... jackpower burde enlig havde fået alle pointene... da erik bad mig om at ændre stien til db\'en blev jeg mistænkelig... jeg havde godt nok gjort det en gang allerede da det jo også var jackpowers forslag, men det virkede ikke rigtig...
så efter lidt fix faxeri virkede det sq pludselig, og det var åbenbart det med stien...
Nå, det må pointene I finde ud af, det gider jeg ikke blande mig :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.