webForumDet fria alternativet

Testa om cookies är påslaget

ASP

11 svar · 616 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Är det någon som har några erfarenheter av detta?

http://www.asp101.com/articles/john/cookiedetect/default.asp

Har läst ovan. Behöver man verkligen använda querystrings. Jag skulle verkligen vilja undvika att ladda om sidan...

?!

Medlem sedan juni 200032 967 inlägg
#2

Du måste ladda om sidan. Eller ladda sida #2 i en dold frame eller liknande. En cookie som sätts finns tillgänglig på sidan oberoende av om klienten har tagit emot den eller inte.

Mvh

Medlem sedan maj 20012 080 inlägg
#3

Ok.

På länken ovan så finns det ytterligare ett exempel.

<%
If Request.Querystring("Check") = "" Then
Session("cookietest") = "True"
Response.Redirect("cookietest.asp?Check=True")
Else
If Session("cookietest") Then
<!-- Execute code if enabled -->
Else
<!-- Execute code if disabled -->
End If
End If
%>

Hur fungerar det? Jag trodde att Session("cookietest") sparades på servern och inte klienten. Vad bevisar igentligen ovan ?

Medlem sedan juni 200032 967 inlägg
#4

Sessionsvariabler genererar också en cookie hos klienten, en sessioncookie som lagras i minnet (inte på disk som vanliga cookies). I cookien finns en nyckel som knyter ihop klienten med rätt sessionsvariabler på servern, eftersom servern annars inte har en aning om vilken klient som äger vilka variabler.

Vad gäller säkerhetsinställningarna i browsern är de olika för de två olika typerna av kakor. Det kanske inte är helt fel att testa båda?

mvh

Medlem sedan maj 20012 080 inlägg
#5

Bra förklaring vise @nders. :)

Medlem sedan maj 20012 080 inlägg
#6

Om man använder javascript för att testa cookies... visst kan man läsa cookies som är skapade med VBscript ?

Medlem sedan juni 200032 967 inlägg
#7

En cookie är en cookie är en cookie. :)

Medlem sedan maj 20012 080 inlägg
#8

Kakor är ju gott. !

<% 	'THIS SCRIPT WILL TEST IF COOKIES IS ENABLED ON THE CLIENT. 
	'THE PAGE WILL BE RELOADED. PUT THIS SCRIPT AT THE TOP.
if Request.Querystring("page") <> "reloaded" then
	Response.Cookies("cookies_enabled") = "yes"
	Response.Cookies("cookies_enabled").Expires = Date + 1
	   'This is useful if you need to remove the test cookie while you are testing.
	   'Response.Cookies("cookie_test").Expires = Date - 2
	Response.Redirect("_inc_test_if_cookies_is_enabled.asp?page=reloaded")
else
	if Request.Cookies("cookies_enabled") = "yes" then 
		'Cookies is enabled
		varCookiesEnabled = "yes"
	else
		'Cookies is NOT enabled
		varCookiesEnabled = "no"
	end if
end if %>

(Klienten stödjer kakor = <%=varCookiesEnabled%>)
Medlem sedan maj 20012 080 inlägg
#9

En liten fix som tar bort en del onödiga omladdningar samt en smidigare hänvisning till samma sida...

<% 	'THIS SCRIPT WILL TEST IF COOKIES IS ENABLED ON THE CLIENT. 
	'THE PAGE WILL BE RELOADED. PUT THIS SCRIPT AT THE TOP.
if Request.Querystring("page") <> "reloaded" and Request.Cookies("cookies_enabled") <> "" then	'Sidan ska inte laddas om efter cookien är satt 1 gång
	Response.Cookies("cookies_enabled") = "yes"
	Response.Cookies("cookies_enabled").Expires = Date + 1
	   'Response.Cookies("cookie_test").Expires = Date - 2		'This is useful if you need to remove the test cookie while you are testing.
	varThisPageUrl = Request.ServerVariables("SCRIPT_NAME")
	varThisPageUrl = varThisPageUrl &"?page=reloaded"
	Response.Redirect(varThisPageUrl)							'Detta gör att det går att inkludera detta skript i tex en header.
else
	if Request.Cookies("cookies_enabled") = "yes" then 
		'Cookies is enabled
		varCookiesEnabled = "yes"
	else
		'Cookies is NOT enabled
		varCookiesEnabled = "no"
	end if
end if %>

(Klienten stödjer kakor = <%=varCookiesEnabled%>)
Medlem sedan juli 20041 183 inlägg
#10

Jag testade din kod men den fungerade in på min maskin?? Det såg dock rätt ut så jag har kollat en del på din kod och gjort en egen... Denna koden har jag testat på IE6 och Firefox 1.0.6 med olika säkerhetsinställningar...

<%
'----- Kontrollerar om en kaka skall skrivas eller om vi skall kontrollera om kakan finns kvar
If Request.QueryString("reloded") <> "True" Then
	
	'----- Sparar en cookie på klientens dator
	Response.Cookies("accept_cookies") = "Accepterad?"
	'----- Cookien försvinner om en timme om användedren skulle få för sig att ändra inställningarna
	Response.Cookies("accept_cookies").Expires = DateAdd("h", 1, Now())
	
	'----- Skapar en sessionscookie i klientens minne
	Session("accept_cookies") = "Accepterad?"
	
	'----- Laddar om sidan för att se om cookies stödjs
	varThisPageUrl = Request.ServerVariables("SCRIPT_NAME")
	varThisPageUrl = varThisPageUrl &"?reloded=True"
	Response.Redirect(varThisPageUrl)
Else
	'----- Kollar om kakan har sparats
	If Request.Cookies("accept_cookies") <> "" And Session("accept_cookies") <> "" Then
		'----- Ja! Alla kakor stödjs
		intCookieStatus = 1
	ElseIf Request.Cookies("accept_cookies") = "" And Session("accept_cookies") <> "" Then
		'----- Ja! men bara sessionskakor stödjs
		intCookieStatus = 2
	ElseIf Request.Cookies("accept_cookies") <> "" And Session("accept_cookies") = "" Then
		'----- Ja! men bara textkakor stödjs
		intCookieStatus = 3
	Else
		'----- Nej! Cookies stöddes ej
		intCookieStatus = 4
	End If
End If

Response.Write("<b>Status:</b> ")
Select Case intCookieStatus
	Case 0
		'----- Ingen kontroll har skett
	Case 1
		Response.Write("Alla kakor accepteras av din webbläsare!")
	Case 2
		Response.Write("Enbart sessionskakor accepteras av din webbläsare!")
	Case 3
		Response.Write("Enbart textkakor accepteras av din webbläsare!")
	Case 4
		Response.Write("Inga kakor accepteras av din webbläsare!")
End Select

Response.Write("<hr>")

'----- Skriver ut textkakan om den finns
Response.Write("Request.Cookies(""accept_cookies"") innehåller <b>" & Request.Cookies("accept_cookies") & "</b><br>" & vbCrLf)
'----- Skriver ut sessionskakan om den finns
Response.Write("Session(""accept_cookies"") innehåller <b>" & Session("accept_cookies") & "</b>")
%>
Medlem sedan maj 20012 080 inlägg
#11

Ser ju jättebra ut. Fungerar utmärkt på min dator. Tummen upp!

Medlem sedan dec. 20051 056 inlägg
#12

Funktionen som laddar om sidan kan med fördel ändras till:

varThisPageUrl = Request.ServerVariables("URL")
varThisPageQueryString = Request.ServerVariables("QUERY_STRING")
if varThisPageQueryString <> "" then 
	varThisPageUrl = varThisPageUrl &"?" &varThisPageQueryString &"&page=reloaded"
else
	varThisPageUrl = varThisPageUrl &"?page=reloaded"
end if

Då fungerar även direktlänkar till sidor som har en querystring i url:en. Ett problem som jag upptäkte att jag hade :(

:)

249 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)