ASP och cookies

ASP

13 svar · 274 visningar · startad av His Divine Shadow

Medlem sedan sep. 20004 079 inlägg
Trådstart#1

Jag undrar hur man kan göra en funktion så att man kan se vad som har uppdaterats sen senaste besöket...
Jag menar om det har kommit en ny post i databasen(har redan så att exakt datum och tid läggs in när en ny post är gjord) sedan sist man besökte sidan(som kollas genom en cookie).

Jag gissar att man kan göra en IF sats som visar en "new" bild om datumet på posten är nyare än datumet i cookien.

Men om man också vill ha en sida som visar nya poster, då måste man väl lägga in det i en SQL sats?

Medlem sedan mars 20002 836 inlägg
#2

checka in denna funktion: http://script.webforum.nu/wf/Forum1/HTML/000068.html

If CheckLastHereDate(Session("LastDateHere")) < dteDateFromDB Then
....

cya,
PatrikB

Medlem sedan sep. 20004 079 inlägg
#3

Jag antar att det ska vara i en global.asa fil?
Jag fick inte det att funka iaf.
Såhär är koden i global.asa:

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

'## -------------------------------------------
'## -- Function:_______	CheckLastHereDate(ByVal LastHereDate)
'## -- Description:____	Check when user last visited the a page
'## -- Date Created:___	January 12, 2001
'## -- Created by:_____	Patrik Berggren
'## -- Contact:________	mrwize@mrwize.nu, [url="http://www.mrwize.nu"]http://www.mrwize.nu[/url] 
'##
Function CheckLastHereDate(ByVal LastDateHere)
'## -- check last date here
'##    If never been here, set last date here to -20 days --
If LastDateHere = "" Then
'## -- get last visit --
LastDateHere = Request.ccookies("2k1BB")("LastDateHere")
Response.ccookies("2k1BB")("LastDateHere") = Now()
Response.ccookies("2k1BB").Expires = DateAdd("d",365,Now())
'## -- if no cookie was found, set last here date to - 20 days. --
If LastDateHere = "" Then
LastDateHere = DateDiff("d",20,Now())
End If
'## -- store last date here in a session --
Session("LastDateHere") = LastDateHere
End If
'## -- return a last date here --
CheckLastHereDate = LastDateHere
End Function

</SCRIPT>

Men när jag har Checklastdate i en fil så får jag:

Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'CheckLastHereDate'
/mainframe.asp, line 55

Medlem sedan sep. 20004 079 inlägg
#4

Förresten, jag skulle vilja ha det i en global.asa fil, eftersom jag vill ha en funktion som funkar med hela siten, inte bara en sida.

Medlem sedan mars 20002 836 inlägg
#5

Nej,
den är inte till för global.asa

utan, den är till för att kontrollera när en besökare var på en viss sida senast.

Du får lägga denna funktion i en sk include fil och inkludera den på de sidor som du skulle behöva ha den på.

cya,
PatrikB

Medlem sedan sep. 20004 079 inlägg
#6

Men då görs väl ett skillt cookie för varje sida dom besöker?

Det är inte vad jag är efter, jag behöver ett script som funkar för hela siten och som kan anropas från alla sidor.

Medlem sedan mars 20002 836 inlägg
#7

ok,
om du vill ha det på flera olika ställen så kan du ju modifiera funktionen lite så att man kan ha dynamisk namntilldelning av cookie/session

Function CheckLastHereDate(ByVal LastDateHere, sCSName)
'## -- check last date here
'## If never been here, set last date here to -20 days --
If LastDateHere = "" Then
'## -- get last visit --
LastDateHere = Request.ccookies(sCSName & "")("LastDateHere")
Response.ccookies(sCSName & "")("LastDateHere") = Now()
Response.ccookies(sCSName & "").Expires = DateAdd("d",365,Now())
'## -- if no cookie was found, set last here date to - 20 days. --
If LastDateHere = "" Then
LastDateHere = DateDiff("d",20,Now())
End If
'## -- store last date here in a session --
Session(sCSName & "") = LastDateHere
End If
'## -- return a last date here --
CheckLastHereDate = LastDateHere
End Function

Då är det bara att köra olika namn på olika sidor

sida1.asp:

strLastDateHere = CheckLastDateHere(Session("Sida1"),"Sida1")

och på sida 2:
strLastDateHere = CheckLastDateHere(Session("Sida2"),"Sida2")

cya,
PatrikB

Medlem sedan sep. 20004 079 inlägg
#8

Njae, det är inte så jag tänkte det.
En cookie, för hela siten som kan används över hela siten.

Global.asa är den enklaste(kanske enda?) vägen.
Vet du nått ASP script ställe eller forum?

Medlem sedan mars 20002 836 inlägg
#9

Vad menar du med en cookie för hela siten?

En cookie sparas ju på klienten (besökarens) dator och som du sedan kan kolla/jämföra med olika datum tex.

cya,
PatrikB

Medlem sedan sep. 20004 079 inlägg
#10

Nej, jag menar, det skapas väl en cookie för varje sida man besöker på siten.

Medlem sedan mars 20002 836 inlägg
#11

Automatiskt?
Nej, det gör det inte.
Det är du själv som måste skapa cookiesarna annars blir det inga.

cya,
PatrikB

Medlem sedan sep. 20004 079 inlägg
#12

Eh....
Vi är inte alls på samma våglängd...

Hursomhelst, efter lite modifiering av scriptet så har jag det att funka i global.asa så nu är det som det ska.

Medlem sedan mars 20002 836 inlägg
#13

he, he ... nä, verkar inte som det :e

.. och hur ser de modifieringarna ut??

Posta gärna hur du löste ditt problem så att fler kan ta del av lösningarna.

cya,
PatrikB

Medlem sedan sep. 20004 079 inlägg
#14
Session("CheckLastHereDate(ByVal LastDateHere)")

If LastDateHere = "" Then
LastDateHere = Request.ccookies("2k1BB")("LastDateHere")
Response.ccookies("2k1BB")("LastDateHere") = Now()
Response.ccookies("2k1BB").Expires = DateAdd("d",365,Now())

If LastDateHere = "" Then
LastDateHere = DateDiff("d",20,Now())
End If
Session("LastDateHere") = LastDateHere
End If
CheckLastHereDate = LastDateHere

End Sub

Sådär.
I filen där jag anropar värdet har jag det såhär:

LastDateHere = Session("LastDateHere")

<%=LastDateHere%>
840 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
701 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
703 ms — ändringar (db)