webForumDet fria alternativet

global.asa

33 svar · 711 visningar · startad av Jymdis

JymdisMedlem sedan mars 20016 260 inlägg
#1

Varför tas inte dom rader bort som motsvarar customerID? det funkar om jag kör koden på en vanlig sida (dvs allt innanför sub Session_OnEnd och end sub)

<script language="vbscript" runat="server">

sub Application_OnStart

end sub

sub Application_OnEnd

end sub

sub Session_OnStart
Session.Timeout = 1
response.redirect "default.asp"
end sub

sub Session_OnEnd

MM_tshirt_STRING = "liteconnectionsaker"

if(session("customerID")  <> "") then 

Command1__bla = session("customerID") 

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_tshirt_STRING
Command1.CommandText = "DELETE FROM dbo.cart  WHERE customerID = " + Replace(Command1__bla, "'", "''") + ""
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

else 
response.redirect "fel.asp"

end if 

end sub

</script>
h0lgerMedlem sedan nov. 2002105 inlägg
#2

Är du säker på att session_OnEnd triggas? Det är inte alltid säkert att den gör det.

Fungerar det verkligen med att använda +-tecken vid konkateneringen istället för &-tecken

@ndersMedlem sedan juni 200032 969 inlägg
#3

Det fungerar ibland att använda + istället för & för att konkatenera strängar. Man skall dock inte göra det. Använd & istället.

Annars: du kan inte köra response.redirect i global.asa. Ta bort hela if then-else-end if, och behåll bara koden som var inne i if-blocket.

Mvh

JymdisMedlem sedan mars 20016 260 inlägg
#4

response.redirect fungerar hur bra som helst - den delen av koden fungerar....
om jag tar bort hela if then else så blir där fel om ett customer id inte är angivet...

@ndersMedlem sedan juni 200032 969 inlägg
#5

Jag vill minnas att det enda sessionsvärdet som finns tillgängligt i global.asa är Session.SessionID, alltså inga ingående variabelvärden. Du får nog spara SessionID också och jämföra mot det i session_onend

Jag har i alla fall svårt att förstå att response.redirect skulle fungera i session_onend, men säger du att det gör det så...

PatrikBMedlem sedan mars 20002 836 inlägg
#6

@nders, du har helt rätt.
Det enda värde du kan använda dig av från Session-objektet i Session_OnEnd är Session.SessionID.

cya,
PatrikB

JymdisMedlem sedan mars 20016 260 inlägg
#7

aha - onend - sorry det var gammal kod som inte skulle vara med.

angående det som var tillgängligt så hade jag också ett gammalt minne men jag förtryckte det för det gör mitt arbete så himla mycket svårare... men ok, då får jag lösa det på det sättet då..
tack för hjälpen.

JymdisMedlem sedan mars 20016 260 inlägg
#8
if(session.sessionID <> "") then 
Command1__tempvar = session.sessionID

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_tshirt_STRING
Command1.CommandText = "DELETE FROM dbo.cart  WHERE sessionID = " + Replace(Command1__tempvar, "'", "''") + ""
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

end if

Funkar ändå inte..

@ndersMedlem sedan juni 200032 969 inlägg
#9

På vilket sätt fungerar det inte? Körs inte Session_onEnd?
Den nya koden fungerar om du kör den löst på en asp-sida?

JymdisMedlem sedan mars 20016 260 inlägg
#10

jo det funkar på en vanlig sida..
session_onend borde ju köras eftersom alla session variblar tas bort och ett nytt sessionid delas ut...

@ndersMedlem sedan juni 200032 969 inlägg
#11

Bara för att en session tar slut behöver det inte betyda att session_onEnd i global.asa körs. Många har problem med att den aldrig körs, exempelvis har jag aldrig fått det att fungera. Visserligen har jag inte försökt speciellt mycket, men...

Session_OnEnd i global.asa har inget att göra med att släppa gamla sessionsid, och framför allt inte med att tilldela nya.

Lägg någon kod som garanterat ska köras, exempelvis loggning till en textfil eller så, för att se om session_onend verkligen körs.

mvh

JymdisMedlem sedan mars 20016 260 inlägg
#12

den körs inte :(
bläää.. hur fixar man d? =)

@ndersMedlem sedan juni 200032 969 inlägg
#13

Jag gjorde en liten sökning på google (det är inte bara du som har problem, se:sökresultaten), och hittade ett dokument, som i vanlig ordning är svårt att förstå, men av innehållet i artikeln framgår att i alla fall jag hade provat att ge IWAM_xxx tillräckliga rättigheter på databasmappar / mapp som skall skrivas fil till.

JymdisMedlem sedan mars 20016 260 inlägg
#14

jag ångrar mig - den körs visst det =)

JymdisMedlem sedan mars 20016 260 inlägg
#15

angående det du skriver anders så har jag lite svårt å förstå det för jag skriver till en sql databas å har full rättighet.. men visst jag kan ju prova :)

@ndersMedlem sedan juni 200032 969 inlägg
#16

Ok, har vi alltså inga problem längre? :D
red: har alltså IWAM_xxx samma rättighter till databasmappen som IUSR_xxx?

Fick du skriva till fil att fungera? I så fall, logga SQL-frågan till fil och se om den innehåller det den ska.

Mvh

JymdisMedlem sedan mars 20016 260 inlägg
#17

jodå.. :) problemet kvarstår.. ;)
ska förklara bättre..

sub Session_OnEnd()
'from här
Application.Lock
Application("visitors")=Application("visitors")-1
Application("sessionruns")=Application("sessionruns")+1
Application.UnLock
'till här fungerar det

MM_tshirt_STRING = "hemligt"

if(session.sessionID <> "") then 
Command1__tempvar = session.sessionID

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_tshirt_STRING
Command1.CommandText = "DELETE FROM dbo.cart  WHERE sessionID = " + Replace(Command1__tempvar, "'", "''") + ""
Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

end if

end sub
@ndersMedlem sedan juni 200032 969 inlägg
#18

Prova att ta bort if-satsen runt. Session.SessionID HAR ett värde, du behöver inte kontrollera det.

mvh

JymdisMedlem sedan mars 20016 260 inlägg
#19

jag vet inte om jag är helt yr men jag har det som en trusted connection, alltså behöver jag väl inte ge några behörigheter?

red.
tack för du tar dig tid @nders =)

@ndersMedlem sedan juni 200032 969 inlägg
#20

ahmr, vad kör du för dbms? jag bara utgick ifrån att du körde Access. Det kanske jag inte skulle gjort... ;)

Spara SQL-frågan i en applicationvariabel, och skriv ut den någon annan stans, för att se om den fjunkar...

På ett ungefär, vad innehåller MM_tshirt_STRING?

170 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
167 ms — hämta tråd, inlägg och bilagor (db)