Hej, jag gör en sida där jag vill kolla vilket språk (svenska, engelska el. tyska) användaren vill se. Innehållet ska infogas via ASP in i HTML strukturen beroende på valt språk.
Det finns olika möjligheter jag kan kolla i följande ordning varje gång en besökare kommer in på en sida:
1. Antingen kan de komma till sidan via en länk med en parameter i HTTP-head, typ: start.asp?lang=en. Om det finns det så sätter jag session och cookie till valet.
Om ingen parameter finns kollar jag:
2. En session-variabel kan redan ha satts på en annan sida inom sajten. Jag kollar om session variablen finns.
Om ingen session variabel finns så kollar jag:
3. Användaren kan ha varit på sajten tidigare. Jag kollar det genom att se om det finns någon cookie med språk-val. Om det finns det så sätter jag session till valet.
Om varken parameter i länken, session eller cookie finns så måste jag redirecta användaren till en sida (kallad default.asp) där han måste välja språk genom att klicka på en av flaggorna.
Session variabeln som alla dessa alternativ resulterar i bestämmer sedan vilket språk som ska infogas ur en include fil där alla språk-strängar ligger.
I stora drag har jag implementerat den kod som krävs för att kolla detta. Men jag får nåt fel med cookies. Ser någon felet?
<%
If Request.QueryString("lang") = "" Then
If Session("session_lang") = "" Then
If IsEmpty(Response.Cookies("cookie_lang")) Then
Response.Redirect("default.asp")
Else
''Här blir det något fel. Kanske läser jag inte cookies rätt.
Session("session_lang") = Response.Cookies("cookie_lang")
End If
End If
Else
Session("session_lang") = Request.QueryString("lang")
Response.Cookies("cookie_lang") = Request.QueryString("lang")
Response.Cookies("cookie_lang").Expires = "24 Dec 2008"
End If
%>
'''Sedan kallar jag på:
<!--#include file="language_content.inc"-->
'''I denna finns en Select Case sats som genom att kolla session-language variabeln avgör vilket språk som alla variabel strängar ska sättas till.
Det måste vara det som är felet, ska testa när jag kommer hem.
Tackar!
Har du något tips på vad jag ska tänka på när jag sätter cookies?
Räcker det med expirery date eller ska jag göra nåt mer? T.ex. kolla om användaren har stöd för cookies. Vad händer om han inte har det?
Och när jag läser cookies. Händer det något om jag försöker läsa och han inte accepterar cookies?
Jag använder aldrig isEmpty, jag vet inte varför men jag har aldrig haft behov av det. Jag brukar köra med = "" istället. Behandlar jag värden som jag tror kan bli NULL (alltså ingenting) så kan man göra såhär:
if trim(strVal & "") = "" then
'gör nåt
end if
Även om strVal är NULL, så får du inget felmeddelande eller strul.
IsEmpty ska man inte använda på det sättet. IsEmpty ger nämligen bara true om en variabel är oinitierad eller explicit satt till värdet Empty. Tom sträng eller null ger false.
Men jag tyckte att det blev fel när jag testade om en cookie var "". När jag däremot ändrade till IsEmpty så fungerade den biten. Men då hade jag iof andra problem med min cookie-avläsning.