Counter: Cookie oder Session?

schutzgeist

Erfahrenes Mitglied
Hallihallo mal wieder :)

Ich hab folgendes Counter Script:
Code:
<%   
Response.Buffer = true
Public Function Counter()
    set rsCounter = Server.CreateObject("ADODB.Recordset")
    rsCounter.Open "Select Counter from tblCounter", whtConn, 1, 2
    rsCounter.Update
    rsCounter.Fields("Counter").Value = rsCounter.Fields("Counter").Value + 1
    Counter = rsCounter.Fields("Counter").Value
    rsCounter.UpdateBatch
    rsCounter.Close
    set rsCounter = nothing
End Function
%>

Da der Counter aber jeden Seitenzugriff zählt (F5) wollt ich nun einen Cookie, bzw. eine Session einbauen, die nach einer gewissen Zeit abläuft.
An der Session bin ich schonmal kläglich gescheitert, und auch der Cookie will irgendwie nicht (immerhin erzeugt es mir bei dem schonmal keinen Fehler und zeigt soweit noch alles an :rolleyes: )

Mein Cookiegewurstel sieht momentan so aus:
Code:
<%   
Response.Buffer = true
Public Function Counter()
    set rsCounter = Server.CreateObject("ADODB.Recordset")
    rsCounter.Open "Select Counter from tblCounter", whtConn, 1, 2
    rsCounter.Update
    rsCounter.Fields("Counter").Value = rsCounter.Fields("Counter").Value + 1
    Counter = rsCounter.Fields("Counter").Value
	if Request.Cookies("warda") = "" then
    rsCounter.UpdateBatch
    rsCounter.Close
    set rsCounter = nothing
	end if
	Response.Cookies("warda") = 1
	Response.Cookies("warda").Expires = dateAdd("n",0.5, now()) 
	Response.redirect Request.ServerVariables("Script_name")
End Function
%>

Große Preisfrage: Wo liegt mein Denkfehler? :)


Ebenso: Cookie oder Session? Da ja doch einige Benutzer Cookies deaktivieren.
Und dann noch, wie man das ganze für den Fall einer Session umbauen müsste?

Danke schonmal im vorraus :)

//Edit:
Anscheinend tut das Cookieding doch irgendwie ganz und garnicht, auch wenn es nichts zu machen scheint. Hab irgendwie die Seite damit lahm gelegt... bis eine Seite geladen hat kann ich mir gemütlich nen Kaffee holen gehn und seh dann immer noch kein Ergerbnis :suspekt:
//Edit 2:
Habs das Cookiezeug rausgeschmissen und mein Counter ist von knapp 160 auf 3600 hoch o_O
:(
 
Zuletzt bearbeitet:

Luzie

Erfahrenes Mitglied
Hi

Du musst den Cookie dort abfragen, wo Du das update ausführst und dort auch den neuen Cookie erzeugen.

Für Sekunden würde ich auch im dateadd mit s arbeiten.
Du brauchst auch keinen redirect für die Funktion, da Du die Abfrage ja nur auf das Update zielen willst.

Code:
<%   
Public Function Counter()
    set rs = Server.CreateObject("ADODB.Recordset")
	sql = "Select * from tblCounter"
    rs.Open sql,objConn,1,2
	if request.Cookies("warda") = "" then
	rs("Counter") = rs("counter")+1
	rs.Update
	Response.Cookies("warda") = 1
	Response.Cookies("warda").Expires = dateAdd("s",30, now()) 
	end if
	counter = rs("counter")
    rs.Close
    set rs = nothing
		
End Function
%>
 

schutzgeist

Erfahrenes Mitglied
Danke, ich probiers mal einzubauen :)
Die halbe Minute war nur deswegen eingetragen, da ich keinen 10min oder länger warten wollte, um zu sehen, ob es überhaupt klappt :) ;)

//Edit: Klappt wunderbar, danke nochmal :)
 
Zuletzt bearbeitet: